com.alibaba.otter.manager.web.home.module.screen.AnalysisDelayStat.java Source code

Java tutorial

Introduction

Here is the source code for com.alibaba.otter.manager.web.home.module.screen.AnalysisDelayStat.java

Source

/*
 * Copyright (C) 2010-2101 Alibaba Group Holding Limited.
 *
 * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
 *
 * 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.alibaba.otter.manager.web.home.module.screen;

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

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.apache.commons.lang.StringUtils;

import com.alibaba.citrus.turbine.Context;
import com.alibaba.citrus.turbine.dataresolver.Param;
import com.alibaba.otter.manager.biz.config.channel.ChannelService;
import com.alibaba.otter.manager.biz.statistics.delay.DelayStatService;
import com.alibaba.otter.manager.biz.statistics.delay.param.DelayStatInfo;
import com.alibaba.otter.shared.common.model.config.channel.Channel;

public class AnalysisDelayStat {

    @Resource(name = "channelService")
    private ChannelService channelService;

    @Resource(name = "delayStatService")
    private DelayStatService delayStatService;

    public void execute(@Param("d5221") String startTime, @Param("d5222") String endTime,
            @Param("pipelineId") Long pipelineId, HttpSession session, Context context) throws Exception {
        Date end = null;
        Date start = null;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        if (StringUtils.isEmpty(startTime) || StringUtils.isEmpty(endTime)) {
            start = new Date(System.currentTimeMillis() / 60000 * 60000 - 24 * 60 * 60 * 1000);
            end = new Date(System.currentTimeMillis() / 60000 * 60000);
        } else {// ?24??
            sdf.setLenient(false);
            if (null != startTime && null != endTime) {
                start = sdf.parse(startTime);
                end = sdf.parse(endTime);
            }
        }

        Channel channel = channelService.findByPipelineId(pipelineId);
        Map<Long, DelayStatInfo> delayStatInfos = new HashMap<Long, DelayStatInfo>();
        if (null != start && null != end) {
            delayStatInfos = delayStatService.listTimelineDelayStat(pipelineId, start, end);
        }

        Double delayAvg = 0.0;
        for (DelayStatInfo info : delayStatInfos.values()) {
            delayAvg += info.getAvgDelayTime();
        }

        if (delayStatInfos.size() != 0) {
            delayAvg = delayAvg / (1.0 * delayStatInfos.size());
        }

        context.put("delayStatInfos", delayStatInfos);
        context.put("delayAvg", delayAvg);
        context.put("channel", channel);
        context.put("pipelineId", pipelineId);
        context.put("start", sdf.format(start));
        context.put("end", sdf.format(end));
    }
}