
org.kuali.maven.mojo.s3.SimpleFormatter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of maven-cloudfront-plugin Show documentation
Show all versions of maven-cloudfront-plugin Show documentation
This plugin integrates maven site generation with Amazon Cloud Front
The newest version!
/**
* Copyright 2004-2012 The Kuali Foundation
*
* Licensed under the Educational Community 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.opensource.org/licenses/ecl2.php
*
* 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 org.kuali.maven.mojo.s3;
import java.text.NumberFormat;
import org.apache.commons.lang.StringUtils;
/**
* Very simple formatter for formatting a few things - transfer rate, elapsed time, bytes
*
* @author Jeff Caddel
* @since May 27, 2010 6:46:17 PM
*/
public class SimpleFormatter {
private static final double KB = 1024;
private static final double MB = 1024 * KB;
private static final double GB = 1024 * MB;
private static final double ONE_SECOND = 1000;
private static final double ONE_MINUTE = 60 * ONE_SECOND;
private static final double FIFTEEN_MINUTES = 15 * ONE_MINUTE;
NumberFormat sizeFormatter = NumberFormat.getInstance();
NumberFormat timeFormatter = NumberFormat.getInstance();
NumberFormat rateFormatter = NumberFormat.getInstance();
public SimpleFormatter() {
super();
sizeFormatter.setGroupingUsed(false);
sizeFormatter.setMaximumFractionDigits(1);
sizeFormatter.setMinimumFractionDigits(1);
timeFormatter.setGroupingUsed(false);
timeFormatter.setMaximumFractionDigits(3);
timeFormatter.setMinimumFractionDigits(3);
rateFormatter.setGroupingUsed(false);
rateFormatter.setMaximumFractionDigits(1);
rateFormatter.setMinimumFractionDigits(1);
}
/**
* Given milliseconds and bytes return kilobytes per second
*/
public String getRate(final long millis, final long bytes) {
int pad = 1;
double seconds = millis / 1000D;
double kilobytes = bytes / 1024D;
double kilobytesPerSecond = kilobytes / seconds;
if (kilobytesPerSecond < 1024) {
return StringUtils.leftPad(rateFormatter.format(kilobytesPerSecond) + " kB/s", pad, " ");
} else {
double transferRate = kilobytesPerSecond / 1024;
return StringUtils.leftPad(rateFormatter.format(transferRate) + " MB/s", pad, " ");
}
}
/**
* Given milliseconds, return seconds or minutes
*/
public String getTime(final long millis) {
int pad = 1;
if (millis < ONE_SECOND) {
return StringUtils.leftPad(millis + "ms", pad, " ");
} else if (millis < 10 * ONE_SECOND) {
return StringUtils.leftPad(timeFormatter.format(millis / ONE_SECOND) + "s", pad, " ");
} else if (millis < FIFTEEN_MINUTES) {
return StringUtils.leftPad(rateFormatter.format(millis / ONE_SECOND) + "s", pad, " ");
} else {
return StringUtils.leftPad(rateFormatter.format(millis / ONE_MINUTE) + "m", pad, " ");
}
}
/**
* Given bytes, return kilobytes if it is less than a megabyte, megabytes if it is less than a gigabyte, otherwise
* gigabytes
*/
public String getSize(final long bytes) {
int pad = 1;
if (bytes < MB) {
return StringUtils.leftPad(sizeFormatter.format(bytes / KB) + "k", pad, " ");
}
if (bytes < GB) {
return StringUtils.leftPad(sizeFormatter.format(bytes / MB) + "m", pad, " ");
}
return StringUtils.leftPad(sizeFormatter.format(bytes / GB) + "g", pad, " ");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy