org.easyrec.controller.dev.InfoController.java Source code

Java tutorial

Introduction

Here is the source code for org.easyrec.controller.dev.InfoController.java

Source

/*
 * Copyright 2015 Research Studios Austria Forschungsgesellschaft mBH
 *
 * This file is part of easyrec.
 *
 * easyrec is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * easyrec is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with easyrec.  If not, see <http://www.gnu.org/licenses/>.
 */

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", "??::?");

        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", "??::?");

        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);
        }
    }

}