CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-io-dropwizard--dropwizard-util

Dropwizard utility classes for data sizes, durations, enums, generics, resources, exceptions, JAR locations, and direct execution services.

Pending
Overview
Eval results
Files

data-size.mddocs/

Data Size and Units

Data size management capabilities for handling sizes with SI and IEC prefix support, including human-readable parsing and unit conversion.

DataSize Class

The DataSize class represents an immutable, thread-safe data size with support for various units and human-readable parsing.

Static Factory Methods

Create DataSize instances using SI (decimal) prefixes:

public static DataSize bytes(long count);
public static DataSize kilobytes(long count);
public static DataSize megabytes(long count);
public static DataSize gigabytes(long count);
public static DataSize terabytes(long count);
public static DataSize petabytes(long count);

Create DataSize instances using IEC (binary) prefixes:

public static DataSize kibibytes(long count);
public static DataSize mebibytes(long count);
public static DataSize gibibytes(long count);
public static DataSize tebibytes(long count);
public static DataSize pebibytes(long count);

Parsing Methods

Parse human-readable strings into DataSize objects:

public static DataSize parse(CharSequence size);
public static DataSize parse(CharSequence size, DataSizeUnit defaultUnit);

Parameters:

  • size - String representation like "128 MB", "5 GB", "1024 bytes"
  • defaultUnit - Unit to use when no unit is specified in the string

Supported Formats:

  • Numbers with units: "128 MB", "5 GB", "1024 KiB"
  • Case-insensitive units: "mb", "MB", "Mb"
  • Various unit spellings: "byte", "bytes", "kilobyte", "kilobytes"
  • Both SI and IEC prefixes: "KB" (kilobytes), "KiB" (kibibytes)

Throws:

  • IllegalArgumentException - If the input cannot be parsed or contains invalid units

Instance Methods

public long getQuantity();
public DataSizeUnit getUnit();

Convert to specific units:

public long toBytes();
public long toKilobytes();
public long toMegabytes();
public long toGigabytes();
public long toTerabytes();
public long toPetabytes();
public long toKibibytes();
public long toMebibytes();
public long toGibibytes();
public long toTebibytes();
public long toPebibytes();

Standard object methods:

public boolean equals(Object obj);
public int hashCode();
public String toString();
public int compareTo(DataSize other);

DataSizeUnit Enum

Enumeration of data size units supporting both SI (decimal) and IEC (binary) prefixes.

Enum Constants

SI (Decimal) Units:

BYTES(8L)                                    // 8 bits
KILOBYTES(8L * 1000L)                       // 1000 bytes
MEGABYTES(8L * 1000L * 1000L)               // 1000 kilobytes
GIGABYTES(8L * 1000L * 1000L * 1000L)       // 1000 megabytes
TERABYTES(8L * 1000L * 1000L * 1000L * 1000L)       // 1000 gigabytes
PETABYTES(8L * 1000L * 1000L * 1000L * 1000L * 1000L) // 1000 terabytes

IEC (Binary) Units:

KIBIBYTES(8L * 1024L)                       // 1024 bytes
MEBIBYTES(8L * 1024L * 1024L)               // 1024 kibibytes
GIBIBYTES(8L * 1024L * 1024L * 1024L)       // 1024 mebibytes
TEBIBYTES(8L * 1024L * 1024L * 1024L * 1024L)       // 1024 gibibytes
PEBIBYTES(8L * 1024L * 1024L * 1024L * 1024L * 1024L) // 1024 tebibytes

Unit Conversion Methods

public long convert(long size, DataSizeUnit unit);

Parameters:

  • size - The magnitude of the size
  • unit - The source unit to convert from

Returns: The converted size in the current unit

Convert to specific units:

public long toBytes(long l);
public long toKilobytes(long l);
public long toMegabytes(long l);
public long toGigabytes(long l);
public long toTerabytes(long l);
public long toPetabytes(long l);
public long toKibibytes(long l);
public long toMebibytes(long l);
public long toGibibytes(long l);
public long toTebibytes(long l);
public long toPebibytes(long l);

Usage Examples

Basic Creation

// Create using factory methods
DataSize oneGb = DataSize.gigabytes(1);
DataSize oneMb = DataSize.megabytes(1);
DataSize oneKib = DataSize.kibibytes(1024);

// Get quantity and unit
long quantity = oneGb.getQuantity(); // 1
DataSizeUnit unit = oneGb.getUnit(); // GIGABYTES

Parsing Examples

// Parse various formats
DataSize size1 = DataSize.parse("128 MB");
DataSize size2 = DataSize.parse("5 GB");
DataSize size3 = DataSize.parse("1024 KiB");
DataSize size4 = DataSize.parse("500"); // Uses default unit (bytes)
DataSize size5 = DataSize.parse("500", DataSizeUnit.KILOBYTES); // 500 KB

// Case insensitive and flexible spelling
DataSize flexible1 = DataSize.parse("128 mb");
DataSize flexible2 = DataSize.parse("5 gigabytes");
DataSize flexible3 = DataSize.parse("1024 kibibyte");

Unit Conversion

DataSize original = DataSize.parse("1 GB");

// Convert using DataSize methods
long bytes = original.toBytes();         // 1,000,000,000
long kilobytes = original.toKilobytes(); // 1,000,000
long megabytes = original.toMegabytes(); // 1,000

// Convert using DataSizeUnit methods
long convertedBytes = DataSizeUnit.BYTES.convert(1, DataSizeUnit.GIGABYTES);
long convertedKb = DataSizeUnit.KILOBYTES.convert(1, DataSizeUnit.GIGABYTES);

Comparison and Sorting

DataSize size1 = DataSize.megabytes(500);
DataSize size2 = DataSize.gigabytes(1);

// Comparison (compares based on byte values)
int comparison = size1.compareTo(size2); // negative (500 MB < 1 GB)

// Equality (compares quantity and unit exactly)
DataSize mb500a = DataSize.megabytes(500);
DataSize mb500b = DataSize.megabytes(500);
boolean equal = mb500a.equals(mb500b); // true

// Note: Different units with same byte value are NOT equal
DataSize bytes1000000 = DataSize.bytes(1000000);
DataSize megabyte1 = DataSize.megabytes(1);
boolean equalBytes = bytes1000000.equals(megabyte1); // false (different units)
boolean equalComparison = bytes1000000.compareTo(megabyte1) == 0; // true (same byte value)

String Representation

DataSize size = DataSize.gigabytes(2);
String str = size.toString(); // "2 gigabytes"

DataSize singleUnit = DataSize.gigabytes(1);
String singleStr = singleUnit.toString(); // "1 gigabyte" (singular)

Error Handling

The parsing methods throw IllegalArgumentException for invalid input:

try {
    DataSize.parse("invalid size"); // Throws IllegalArgumentException
} catch (IllegalArgumentException e) {
    // Handle parsing error
}

try {
    DataSize.parse("128 XB"); // Throws IllegalArgumentException (unknown unit)
} catch (IllegalArgumentException e) {
    // Handle unknown unit error
}

Install with Tessl CLI

npx tessl i tessl/maven-io-dropwizard--dropwizard-util

docs

data-size.md

duration.md

enum-generics.md

index.md

jar-executor.md

resource-exception.md

tile.json