commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Janek Bogucki <>
Subject Re: Conversion utilities
Date Thu, 14 Nov 2002 17:52:02 GMT
Hi Travis,

On Thursday 14 November 2002  4:21 am, wrote:
> I also have a package of conversion classes that convert different
> measurements from imperial to metric and vice versa for things like Length,
> Pressure, Force, etc.
> And along with that I have a Fraction and FractionFormat class that deals
> with fractions (parsing, formatting, etc).
> Wonder if commons might be a good fit for that?
> Travis Reeder
> --
> To unsubscribe, e-mail:  
> <> For additional
> commands, e-mail: <>

Let me add some more stuff that might be the basis for something.

I need to represent currency ranges (in various currencies using the 
ISO 4217 currency codes), and duration ranges (with various units: hours, 
days, months, years).

I imagine the CurrencyRange would go like this


public interface CurrencyRange {

  // ---------------------------
  // Property Getters
  // ---------------------------

  Currency getCurrency();

  o.a.c.lang.NumberRange getRange ();


The Currency class would be similar to java.util.Currency, but would be 
available for JDK 1.3.1 users (me).

CurrencyRange would be immutable and possibly final (I've sketched it as an 
interface above for discussion). Since my needs are completely covered by the 
two properties above I have not added any further operations.

The DurationRange would be similar:


public interface DurationRange {

  // ---------------------------
  // Property Getters
  // ---------------------------

  DurationUnitEnum getUnit();

  o.a.c.lang.NumberRange getRange ();


The constructor could be like this

  DurationRange ( DurationUnitEnum, NumberRange range ) ;

(Once again DurationRange is likely to be a final class, not an interface.)

Travis' CalenderUtils.getRange ( int field, Date from, Date to ) method could 
be used in a factory method on DurationRange

   * Return a DurationRange where min==max and min == to - from, and field is
   * from Calender.
  public static DurationRange getInstance ( int field, Date from, Date to )

   * Return a DurationRange where field is from Calender.
  public static DurationRange getInstance ( int field, long min, long ) ;

For DurationUnitEnum:

import java.util.Calendar ;

public final class DurationUnitEnum extends ValuedEnum {

   // enums based on code in Travis' CalendarUtils.getRange
   public static final int  DURATION_UNIT_SECOND_VALUE  = Calendar.SECOND ;
   public static final int  DURATION_UNIT_MINUTE_VALUE  = Calendar.MINUTE ;
   public static final int  DURATION_UNIT_HOUR_VALUE    = Calendar.HOUR ;
   public static final int  DURATION_UNIT_DAY_VALUE     = Calendar.DAY ;
   public static final int  DURATION_UNIT_WEEK_VALUE    = Calendar.WEEK ;
   public static final int  DURATION_UNIT_MONTH_VALUE   = Calendar.MONTH ;
   public static final int  DURATION_UNIT_YEAR_VALUE    = Calendar.YEAR ;

   public static final DurationUnitEnum DURATION_UNIT_SECOND
        = new DurationUnitEnum
                 ( "Seconds", DURATION_UNIT_SECOND_VALUE );


   public static final DurationUnitEnum DURATION_UNIT_YEAR
        = new DurationUnitEnum
                 ( "Years", DURATION_UNIT_YEAR_VALUE );

   private DurationUnitEnum name, int value) {
     super( name, value );
   public static DurationUnitEnum getEnum(String durationUnit) {
     return (DurationUnitEnum) getEnum(DurationUnitEnum.class, durationUnit); 
   public static DurationUnitEnum getEnum(int durationUnit) {
     return (DurationUnitEnum) getEnum(DurationUnitEnum.class, durationUnit);
   public static Map getEnumMap() {
     return getEnumMap(DurationUnitEnum.class);
   public static List getEnumList() {
     return getEnumList(DurationUnitEnum.class);
   public static Iterator iterator() {
     return iterator(DurationUnitEnum.class);
I'd be happy to contribute the basic attempt at CurrencyRange, if there is 
interest and it doesn't overlap with anything else already in existance.

If anyone can point at a quantities library with this in already i'd be very 


To unsubscribe, e-mail:   <>
For additional commands, e-mail: <>

View raw message