Package azkaban.common.web

Source Code of azkaban.common.web.GuiUtils

/*
* Copyright 2010 LinkedIn, Inc
*
* 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 azkaban.common.web;

import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Pattern;

import org.joda.time.DateTime;
import org.joda.time.Duration;
import org.joda.time.Period;
import org.joda.time.ReadablePeriod;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.joda.time.format.PeriodFormatter;
import org.joda.time.format.PeriodFormatterBuilder;

/**
* Utilities available from within velocity. An instance of this class is added
* to every request
*
* @author jkreps
*
*/
public class GuiUtils {

    private static final long ONE_KB = 1024;
    private static final long ONE_MB = 1024 * ONE_KB;
    private static final long ONE_GB = 1024 * ONE_MB;
    private static final long ONE_TB = 1024 * ONE_GB;
    private static final Pattern NEWLINE_PATTERN = Pattern.compile("[\r\n]");

    private static final PeriodFormatter PEROD_FORMAT = new PeriodFormatterBuilder().printZeroNever()
                                                                                    .appendDays()
                                                                                    .appendSuffix(" day",
                                                                                                  " days")
                                                                                    .appendSeparator(", ")
                                                                                    .printZeroNever()
                                                                                    .appendHours()
                                                                                    .appendSuffix(" hour",
                                                                                                  " hours")
                                                                                    .appendSeparator(", ")
                                                                                    .printZeroAlways()
                                                                                    .appendMinutes()
                                                                                    .appendSuffix(" minute",
                                                                                                  " minutes")
                                                                                    .toFormatter();

    public String formatDate(DateTime date) {
        return formatDate(date, "MM-dd-yyyy");
    }

    public String formatDateTime(DateTime date) {
        return formatDate(date, "MM-dd-yyyy HH:mm:ss");
    }

    public String formatDate(DateTime date, String format) {
        DateTimeFormatter f = DateTimeFormat.forPattern(format);
        return f.print(date);
    }

    public Duration duration(DateTime a, DateTime b) {
        return new Duration(a, b);
    }

    public int durationInMinutes(DateTime a, DateTime b) {
        return duration(a, b).toPeriod().toStandardMinutes().getMinutes();
    }

    public Period period(DateTime a, DateTime b) {
        return duration(a, b).toPeriod();
    }

    public String formatPeriod(ReadablePeriod period) {
        return PEROD_FORMAT.print(period);
    }

    public String getClassBaseName(Class<?> c) {
        String name = c.getName();
        int last = name.lastIndexOf('.');
        if(last >= 0)
            return name.substring(last + 1, name.length());
        else
            return name;
    }

    public String repeat(String s, int n) {
        StringBuffer b = new StringBuffer(n * s.length());
        for(int i = 0; i < n; i++)
            b.append(s);
        return b.toString();
    }

    public String formatPercent(double d, int fracDigits) {
        NumberFormat format = NumberFormat.getPercentInstance();
        format.setMaximumFractionDigits(fracDigits);
        return format.format(d);
    }

    public boolean isNull(Object o) {
        return o == null;
    }

    public <T> List<T> sorted(Collection<T> c, Comparator<T> comparator) {
        List<T> l = new ArrayList<T>(c);
        Collections.sort(l, comparator);
        return l;
    }

    public <T> List<T> reversed(Collection<T> c) {
        List<T> l = new ArrayList<T>(c);
        Collections.reverse(l);
        return l;
    }

    public <T extends Comparable<? super T>> List<T> sorted(Collection<T> c) {
        List<T> l = new ArrayList<T>(c);
        Collections.sort(l);
        return l;
    }

    public Set<Object> getEmptySet() {
        return new HashSet<Object>();
    }

    public <T> void add(Collection<T> c, T t) {
        c.add(t);
    }

    public String newlineToBr(String in) {
        return NEWLINE_PATTERN.matcher(in).replaceAll("<br/>");
    }

    public DateTime getNow() {
        return new DateTime();
    }

    public String elipsify(String s, int length) {
        if(s == null)
            return "";
        else if(s.length() <= length)
            return s;
        else
            return s.substring(0, Math.min(s.length(), length - 3)) + "...";
    }

    public String displayBytes(long sizeBytes) {
        NumberFormat nf = NumberFormat.getInstance();
        nf.setMaximumFractionDigits(2);
        if(sizeBytes >= ONE_TB)
            return nf.format(sizeBytes / (double) ONE_TB) + " tb";
        else if(sizeBytes >= ONE_GB)
            return nf.format(sizeBytes / (double) ONE_GB) + " gb";
        else if(sizeBytes >= ONE_MB)
            return nf.format(sizeBytes / (double) ONE_MB) + " mb";
        else if(sizeBytes >= ONE_KB)
            return nf.format(sizeBytes / (double) ONE_KB) + " kb";
        else
            return sizeBytes + " B";
    }

    public List<Integer> seq(int max) {
        List<Integer> l = new ArrayList<Integer>();
        for(int i = 0; i < max; i++)
            l.add(i);
        return l;
    }

}
TOP

Related Classes of azkaban.common.web.GuiUtils

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.