StatusController.java 3.2 KB
package com.myproject.webapp.controller.webService;

import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.myproject.bean.update.Humiture;
import com.myproject.bean.update.Settings;
import com.myproject.bean.utils.BoxStatusBean;
import com.myproject.bean.utils.StatusBean;
import com.myproject.manager.IHumitureManager;
import com.myproject.webapp.controller.storage.BaseController;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.util.Collection;
import java.util.List;
import java.util.Map;

@Controller
@RequestMapping("/service/store")
public class StatusController extends BaseController{

    @Autowired
    private ITaskService taskService;

    @Autowired
    private IHumitureManager humitureManager;

    @Autowired
    private DataCache dataCache;

    protected final transient Logger log = LogManager.getLogger(getClass());

    @RequestMapping(value = "/status")
    @ResponseBody
    public StatusBean readStatus(@RequestParam String cid, HttpServletRequest request) {
        if(Strings.isNullOrEmpty(cid)){
            cid = dataCache.defaultStorageCid();
        }
        StatusBean statusBean = taskService.getStatus(cid);
        if(!Strings.isNullOrEmpty(statusBean.getMsgCode())){
            String localeMsg = getText("client."+statusBean.getMsgCode(),statusBean.getMsgParam(),request.getLocale(),statusBean.msg);
            statusBean.setMsg(localeMsg);
        }

        //log.debug("Get cid: " + cid + " status: " + statusBean.getStatus() + " and error: " + statusBean.getError());
        return statusBean;
    }

    @RequestMapping(value = "/statusList")
    @ResponseBody
    public List<StatusBean> statusList(HttpServletRequest request){
        String cids = request.getParameter("cids");
        Collection<String> cidList;
        if(Strings.isNullOrEmpty(cids)){
            cidList = dataCache.getAllStorage().keySet();
        }else{
            cidList = Lists.newArrayList(cids.split(","));
        }
        List<StatusBean> statusList = Lists.newArrayList();
        for (String cid : cidList) {
            if(cid.isEmpty()){
                continue;
            }
            StatusBean statusBean = taskService.getStatus(cid);
            if(!Strings.isNullOrEmpty(statusBean.getMsgCode())){
                String localeMsg = getText("client."+statusBean.getMsgCode(),statusBean.getMsgParam(),request.getLocale(),statusBean.msg);
                statusBean.setMsg(localeMsg);
            }
            statusList.add(statusBean);
        }
        return statusList;
    }


    @RequestMapping(value = "/latestStatus")
    @ResponseBody
    public List<Humiture> latestStatus(@RequestParam String cid){
        int days = 300;
        List<Humiture> result = humitureManager.latest(cid, days);
        return result;
    }
}