Java tutorial
/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.tools; import java.util.HashMap; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import com.enonic.cms.framework.cache.CacheManager; import com.enonic.cms.core.portal.livetrace.LivePortalTraceJsonGenerator; import com.enonic.cms.core.portal.livetrace.LivePortalTraceService; import com.enonic.cms.core.portal.livetrace.PortalRequestTrace; import com.enonic.cms.core.portal.livetrace.PortalRequestTraceRow; import com.enonic.cms.core.portal.livetrace.systeminfo.SystemInfo; import com.enonic.cms.core.portal.livetrace.systeminfo.SystemInfoFactory; /** * This class implements the connection info controller. */ public final class LivePortalTraceController extends AbstractToolController { @Autowired private SystemInfoFactory systemInfoFactory; private LivePortalTraceService livePortalTraceService; private CacheManager cacheManager; @Autowired private LivePortalTraceJsonGenerator livePortalTraceJsonGenerator; public LivePortalTraceController() { setEnterpriseFeature(true); } @Override protected void doPost(final HttpServletRequest req, final HttpServletResponse res) throws Exception { final String command = req.getParameter("command"); if ("clear-longestpagerequests".equals(command)) { livePortalTraceService.clearLongestPageRequestsTraces(); } else if ("clear-longestattachmentrequests".equals(command)) { livePortalTraceService.clearLongestAttachmentRequestTraces(); } else if ("clear-longestimagerequests".equals(command)) { livePortalTraceService.clearLongestImageRequestTraces(); } res.setStatus(HttpServletResponse.SC_NO_CONTENT); } @Override protected void doGet(final HttpServletRequest req, final HttpServletResponse res) throws Exception { final String systemInfo = req.getParameter("system-info"); final String window = req.getParameter("window"); final String history = req.getParameter("history"); final HashMap<String, Object> model = new HashMap<String, Object>(); model.put("baseUrl", getBaseUrl(req)); if (StringUtils.isNotBlank(systemInfo)) { final SystemInfo systemInfoObject = systemInfoFactory.createSystemInfo( livePortalTraceService.getNumberOfPortalRequestTracesInProgress(), cacheManager); returnJson(livePortalTraceJsonGenerator.generate(systemInfoObject), res); } else if ("current".equals(window)) { final List<PortalRequestTrace> traces = livePortalTraceService.getCurrentPortalRequestTraces(); returnJson(livePortalTraceJsonGenerator.generate(PortalRequestTraceRow.createRows(traces)), res); } else if ("longestpagerequests".equals(window)) { final List<PortalRequestTrace> traces = livePortalTraceService.getLongestTimePortalPageRequestTraces(); returnJson(livePortalTraceJsonGenerator.generate(PortalRequestTraceRow.createRows(traces)), res); } else if ("longestattachmentrequests".equals(window)) { final List<PortalRequestTrace> traces = livePortalTraceService .getLongestTimePortalAttachmentRequestTraces(); returnJson(livePortalTraceJsonGenerator.generate(PortalRequestTraceRow.createRows(traces)), res); } else if ("longestimagerequests".equals(window)) { final List<PortalRequestTrace> traces = livePortalTraceService.getLongestTimePortalImageRequestTraces(); returnJson(livePortalTraceJsonGenerator.generate(PortalRequestTraceRow.createRows(traces)), res); } else if (history != null) { final String completedAfterStr = req.getParameter("completed-after"); final String countStr = req.getParameter("count"); final String completedBeforeStr = req.getParameter("completed-before"); Long completedAfter = null; if (!StringUtils.isEmpty(completedAfterStr)) { completedAfter = Long.valueOf(completedAfterStr); } Integer count = null; if (!StringUtils.isEmpty(countStr)) { count = Integer.valueOf(countStr); } Long completedBefore = null; if (!StringUtils.isEmpty(completedBeforeStr)) { completedBefore = Long.valueOf(completedBeforeStr); } List<PortalRequestTrace> traces; if (completedBefore != null) { traces = livePortalTraceService.getCompletedBefore(completedBefore); } else { traces = livePortalTraceService.getCompletedAfter(completedAfter); } if (count != null) { traces = traces.subList(0, Math.min(count, traces.size())); } final String jsonString = livePortalTraceJsonGenerator .generate(PortalRequestTraceRow.createRows(traces)); returnJson(jsonString, res); } else { model.put("livePortalTraceEnabled", isLivePortalTraceEnabled() ? 1 : 0); res.setHeader("Content-Type", "text/html; charset=utf-8"); renderView(req, res, model, "livePortalTracePage"); } } private void returnJson(String json, HttpServletResponse res) throws Exception { res.setHeader("Content-Type", "application/json; charset=UTF-8"); res.getWriter().println(json); } private boolean isLivePortalTraceEnabled() { return livePortalTraceService.tracingEnabled(); } @Autowired public void setLivePortalTraceService(LivePortalTraceService livePortalTraceService) { this.livePortalTraceService = livePortalTraceService; } @Autowired public void setCacheManager(CacheManager cacheManager) { this.cacheManager = cacheManager; } }