/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.easyrec.controller.dev; import com.eaio.util.text.HumanTime; import org.apache.commons.io.FileSystemUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.easyrec.store.dao.plugin.LogEntryDAO; import org.easyrec.store.dao.web.OperatorDAO; import org.easyrec.store.dao.web.RemoteTenantDAO; import org.easyrec.util.core.MessageBlock; import org.easyrec.util.core.Security; import org.easyrec.utils.servlet.ServletUtils; import org.easyrec.vocabulary.MSG; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.multiaction.MultiActionController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.lang.management.ManagementFactory; /** * @author dmann */ public class InfoController extends MultiActionController { private final Log logger = LogFactory.getLog(this.getClass()); private RemoteTenantDAO remoteTenantDAO; private OperatorDAO operatorDAO; private LogEntryDAO logEntryDAO; public void setOperatorDAO(OperatorDAO operatorDAO) { this.operatorDAO = operatorDAO; } public void setRemoteTenantDAO(RemoteTenantDAO remoteTenantDAO) { this.remoteTenantDAO = remoteTenantDAO; } public void setLogEntryDAO(LogEntryDAO logEntryDAO) { this.logEntryDAO = logEntryDAO; } private static final String HOME = "home"; private static final String PULL_USED_MEM = "pullusedmem"; public ModelAndView home(HttpServletRequest request, HttpServletResponse httpServletResponse) { String tenantId = ServletUtils.getSafeParameter(request, "tenantId", ""); String operatorId = ServletUtils.getSafeParameter(request, "operatorId", ""); ModelAndView mav = new ModelAndView("page"); mav.addObject("title", "easyrec :: administration"); mav.addObject("operatorId", operatorId); mav.addObject("tenantId", tenantId); if (Security.isDeveloper(request)) { mav.setViewName("dev/page"); mav.addObject("page", "home"); mav.addObject("operatorCount", operatorDAO.count()); mav.addObject("tenantCount", remoteTenantDAO.count()); mav.addObject("dbName", operatorDAO.getDbName()); mav.addObject("dbUserName", operatorDAO.getDbUserName()); mav.addObject("signedinOperatorId", Security.signedInOperatorId(request)); mav.addObject("heapsize", ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getMax() / (1000000)); mav.addObject("usedmemory", ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed() / (1000000)); int computationTimeInMilliseconds = logEntryDAO.getComputationDurationForDate() * 1000; String computationTime = HumanTime.approximately(computationTimeInMilliseconds); computationTime = computationTime.replaceAll("ms", "@1"); computationTime = computationTime.replaceAll("s", "@2"); computationTime = computationTime.replaceAll("m", "@3"); computationTime = computationTime.replaceAll("h", "@4"); computationTime = computationTime.replaceAll("d", "@5"); computationTime = computationTime.replaceAll("@1", "milliseconds"); computationTime = computationTime.replaceAll("@2", "seconds"); computationTime = computationTime.replaceAll("@3", "minutes"); computationTime = computationTime.replaceAll("@4", "hours"); computationTime = computationTime.replaceAll("@5", "days"); mav.addObject("dailyComputationTime", computationTime); long freeSpace = 0L; try { freeSpace = FileSystemUtils.freeSpaceKb(System.getProperties().getProperty("user.dir")); } catch (IOException e) { logger.error("Could not check free Free Disc Space :" + e.getMessage()); } mav.addObject("freespace", freeSpace / 1048576); return mav; } else { return MessageBlock.createSingle(mav, MSG.NOT_SIGNED_IN, HOME, MSG.ERROR); } } public ModelAndView pullusedmem(HttpServletRequest request, HttpServletResponse httpServletResponse) { String tenantId = ServletUtils.getSafeParameter(request, "tenantId", ""); String operatorId = ServletUtils.getSafeParameter(request, "operatorId", ""); ModelAndView mav = new ModelAndView("page"); mav.addObject("title", "easyrec :: administration"); mav.addObject("operatorId", operatorId); mav.addObject("tenantId", tenantId); if (Security.isDeveloper(request)) { return MessageBlock.createSingle(mav, MSG.OPERATION_SUCCESSFUL, Long.toString(ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed() / (1000000)), MSG.SUCCESS); } else { return MessageBlock.createSingle(mav, MSG.NOT_SIGNED_IN, PULL_USED_MEM, MSG.ERROR); } } }