package xin.glue.ui.common.component; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.UUID; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import com.posdata.glue.bean.PosBeanFactory; import com.posdata.glue.context.PosContext; import com.posdata.glue.dao.PosGenericDao; import com.posdata.glue.dao.vo.PosParameter; import com.posdata.glue.dao.vo.PosRowSet; public class PosStrutsAction extends com.posdata.glue.web.control.PosStrutsAction { public ActionForward execute(ActionMapping actionmapping, ActionForm actionform, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { request.setAttribute("HttpServletRequest", request); request.setAttribute("HttpServletResponse", response); PosBeanFactory b = PosContext.getBeanFactory(); PosGenericDao dao = (PosGenericDao) b.getBeanObject("mesdao"); DateFormat df = new SimpleDateFormat("yyyyMMddHHmmSS"); UUID uuid = UUID.randomUUID(); Date start = new Date(); String ipadr=request.getRemoteAddr(); String url = request.getRequestURL().toString(); String pageId = request.getParameter("pageId"); Map map = request.getParameterMap(); Iterator it = map.entrySet().iterator(); StringBuffer params = new StringBuffer(); while (it.hasNext()) { Entry entry = (Entry)it.next(); params.append("key: " + entry.getKey() + ", value: " + ((String[])entry.getValue())[0]).append(";\n"); } String str =params.toString(); if(str.length()>=2000){ str = str.substring(0, 2000); } PosParameter posparam = new PosParameter(); posparam.setValueParamter(0, uuid.toString()); posparam.setValueParamter(1, str); posparam.setValueParamter(2, 0); posparam.setValueParamter(3, Thread.currentThread().getId()); posparam.setValueParamter(4, Thread.currentThread().getName()); posparam.setValueParamter(5, df.format(start)); dao.insert("UIB020020_93.INSERT", posparam); ActionForward af = super.execute(actionmapping, actionform, request, response); int resultSize = 0; Date end = new Date(); PosContext ctx = (PosContext)request.getAttribute("PosContext"); Iterator it2 = ctx.values().iterator(); int i = 0; while (it2.hasNext()) { Object object = it2.next(); if (object != null) { System.out.println("object class: " + object.getClass().getName()); if (object instanceof PosRowSet) { resultSize += ((PosRowSet)object).count(); } else if (object instanceof Collection) { resultSize += ((Collection)object).size(); } else if (object instanceof Map) { resultSize += ((Map)object).size(); } else if (object.getClass().isArray()) { resultSize += ((Object[])object).length; } } i++; } System.out.println("i: " + i); System.out.println("resultSize: " + resultSize); posparam = new PosParameter(); posparam.setValueParamter(0, 1); posparam.setValueParamter(1, df.format(end)); posparam.setValueParamter(2, (end.getTime() - start.getTime())); posparam.setValueParamter(3, resultSize); posparam.setValueParamter(4, uuid.toString()); dao.update("UIB020020_93.UPDATE", posparam); return af; //return super.execute(actionmapping, actionform, request, response); } }