Package com.skymobi.monitor.action

Source Code of com.skymobi.monitor.action.MetricAction

/**
* Copyright (C) 2012 skymobi LTD
*
* Licensed under GNU GENERAL PUBLIC LICENSE  Version 3 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.gnu.org/licenses/gpl-3.0.html
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.skymobi.monitor.action;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import com.skymobi.monitor.model.ChartView;
import com.skymobi.monitor.util.ChartUtil;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.google.common.collect.Lists;
import com.skymobi.monitor.model.MetricValue;
import com.skymobi.monitor.model.Project;
import com.skymobi.monitor.model.TimeRange;
import com.skymobi.monitor.service.ProjectService;

/**
* @author  Hill.Hu,steven.zheng
*/
@Controller
public class MetricAction {
    private static Logger logger = LoggerFactory.getLogger(MetricAction.class);

    @Resource
    private ProjectService projectService;

    @RequestMapping(value = "/projects/{projectName}/metrics", method = RequestMethod.GET)
    public @ResponseBody ModelMap  renderVar(ModelMap map, @PathVariable String projectName, String metricName,String newChartTitle) {
      Project project = projectService.findProject(projectName);
      if(StringUtils.isNotEmpty(newChartTitle)){
          project.getViews().put(newChartTitle, metricName);
          projectService.saveProject(project);
      }

        String[] metrics = metricName.split(",");

        List<List<MetricValue>>  metricLists=Lists.newArrayList();
        for(String name:metrics){
            metricLists.add(project.findMetricData(name));
        }

        map.put("data", ChartUtil.format(metricLists));
        return  map;
    }

    @RequestMapping(value = "/projects/{projectName}/metrics/add", method = RequestMethod.POST)
    public @ResponseBody
    ChartView addMetricView(ModelMap map, @PathVariable String projectName,HttpEntity<ChartView> entity ) {
        ChartView chartView=entity.getBody();
        Assert.notNull(chartView.getTitle());
        Project project = projectService.findProject(projectName);
        project.getChartViews().add(chartView);
        projectService.saveProject(project);
        return  chartView;
    }
    @RequestMapping(value = "/projects/{projectName}/metrics/show", method = RequestMethod.GET)
    public @ResponseBody ModelMap  show(ModelMap map, @PathVariable String projectName, String title) {
        Project project = projectService.findProject(projectName);

        List<List<MetricValue>>  metricLists=Lists.newArrayList();
            ChartView view = null;
        for(ChartView chartView:project.getChartViews()){
            if(title.equals(chartView.getTitle()))
            {
                view=chartView;
                break;
            }
        }
        if(view!=null){
            for(String name:view.getMetricNames()){
                metricLists.add(project.findMetricData(name));
            }

            map.put("data", ChartUtil.format(metricLists,false));
        }


        return  map;
    }
    @RequestMapping(value = "/projects/{projectName}/metrics/destroy")
    public @ResponseBody ModelMap  metricsDelete(ModelMap map, @PathVariable String projectName, String title) {
      Project project = projectService.findProject(projectName);
      if(StringUtils.isNotEmpty(title)){
            for(int i=0;i<project.getChartViews().size();i++)
        if(project.getChartViews().get(i).getTitle().equals(title)){
          project.getChartViews().remove(i);
          projectService.saveProject(project);
        }
      }
      return  map;
    }



    @RequestMapping(value = "/projects/{projectName}/metrics/timeRange", method = RequestMethod.POST)
    public String save(@PathVariable String projectName, TimeRange timeRange) {
        Project project = projectService.findProject(projectName);

        project.setTimeRange(timeRange);

        projectService.saveProject(project);
        return "redirect:/projects/" + projectName;
    }
    @RequestMapping(value = "/projects/{projectName}/setting/timeRange", method = RequestMethod.POST)
    public @ResponseBody String timeRange(@PathVariable String projectName, HttpEntity<TimeRange> entity) {
        TimeRange timeRange=entity.getBody();
        Assert.notNull(timeRange,"time rage should not be null");
        Project project = projectService.findProject(projectName);

        project.setTimeRange(timeRange);

        projectService.saveProject(project);
        return "true";
    }
}
TOP

Related Classes of com.skymobi.monitor.action.MetricAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.