/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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.jstorm.common.metric.old.window; import com.google.common.base.Joiner; import java.util.*; public class StatBuckets { public static final Integer NUM_STAT_BUCKETS = 20; public static final Integer MINUTE_WINDOW = 600; public static final Integer HOUR_WINDOW = 10800; public static final Integer DAY_WINDOW = 86400; public static final Integer ALL_TIME_WINDOW = 0; public static Set<Integer> TIME_WINDOWS = new TreeSet<Integer>(); static { TIME_WINDOWS.add(ALL_TIME_WINDOW); TIME_WINDOWS.add(MINUTE_WINDOW); TIME_WINDOWS.add(HOUR_WINDOW); TIME_WINDOWS.add(DAY_WINDOW); } public static final String MINUTE_WINDOW_STR = "0d0h10m0s"; public static final String HOUR_WINDOW_STR = "0d3h0m0s"; public static final String DAY_WINDOW_STR = "1d0h0m0s"; public static final String ALL_WINDOW_STR = "All-time"; public static Integer[] STAT_BUCKETS = { MINUTE_WINDOW / NUM_STAT_BUCKETS, HOUR_WINDOW / NUM_STAT_BUCKETS, DAY_WINDOW / NUM_STAT_BUCKETS }; private static final String[][] PRETTYSECDIVIDERS = { new String[] { "s", "60" }, new String[] { "m", "60" }, new String[] { "h", "24" }, new String[] { "d", null } }; /** * Service b * * @param key * @return */ public static String parseTimeKey(Integer key) { if (key == 0) { return ALL_WINDOW_STR; } else { return String.valueOf(key); } } /** * * Default is the latest result * * @param showKey * @return */ public static Integer getTimeKey(String showKey) { Integer window = null; if (showKey == null) { window = (MINUTE_WINDOW); } else if (showKey.equals(MINUTE_WINDOW_STR)) { window = (MINUTE_WINDOW); } else if (showKey.equals(HOUR_WINDOW_STR)) { window = (HOUR_WINDOW); } else if (showKey.equals(DAY_WINDOW_STR)) { window = (DAY_WINDOW); } else if (showKey.equals(ALL_WINDOW_STR)) { window = ALL_TIME_WINDOW; } else { window = MINUTE_WINDOW; } return window; } /** * Default is the latest result * * @param showStr * @return */ public static String getShowTimeStr(Integer time) { if (time == null) { return MINUTE_WINDOW_STR; } else if (time.equals(MINUTE_WINDOW)) { return MINUTE_WINDOW_STR; } else if (time.equals(HOUR_WINDOW)) { return HOUR_WINDOW_STR; } else if (time.equals(DAY_WINDOW)) { return DAY_WINDOW_STR; } else if (time.equals(ALL_TIME_WINDOW)) { return ALL_WINDOW_STR; } else { return MINUTE_WINDOW_STR; } } /** * seconds to string like 1d20h30m40s * * @param secs * @return */ public static String prettyUptimeStr(int secs) { int diversize = PRETTYSECDIVIDERS.length; List<String> tmp = new ArrayList<String>(); int div = secs; for (int i = 0; i < diversize; i++) { if (PRETTYSECDIVIDERS[i][1] != null) { Integer d = Integer.parseInt(PRETTYSECDIVIDERS[i][1]); tmp.add(div % d + PRETTYSECDIVIDERS[i][0]); div = div / d; } else { tmp.add(div + PRETTYSECDIVIDERS[i][0]); } } String rtn = ""; int tmpSzie = tmp.size(); for (int j = tmpSzie - 1; j > -1; j--) { rtn += tmp.get(j); } return rtn; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub } }