commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeff Varszegi <jvarsz...@yahoo.com>
Subject Re: Conversion utilities
Date Thu, 14 Nov 2002 19:31:04 GMT
Janek,

I made an interface called Range that is supported by classes called ComparableRange etc.
 The
ComparableRange class can use any objects that support Comparable (or, alternately, any objects
with a supplied Comparator), and I also made specific versions for Date and Double to eliminate
unnecessary casting.  I needed the Date one for code I'm writing.  I didn't get the time to
implement any for primitive types yet.  Range supports disjoint ranges of values, checking
to see
if a value falls within the range, merging two ranges, etc.  

I will send my code as soon as I can-- right now I'm setting up a home network, and my laptop
isn't on it yet.  In the meantime, can you post the CurrencyRange code you've got?  Thanks
a lot.
I definitely think it will be of general-purpose application.  I don't know of any quantities
library either, but I'd be thrilled to take a look at one.

Your friend,
Jeff

--- Janek Bogucki <yan@studylink.com> wrote:
> Hi Travis,
> 
> On Thursday 14 November 2002  4:21 am, travis@thinkvirtual.com 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:  
> > <mailto:commons-dev-unsubscribe@jakarta.apache.org> For additional
> > commands, e-mail: <mailto:commons-dev-help@jakarta.apache.org>
> 
> 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
> 
> CONCEPTUAL API:
> 
> 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:
> 
> CONCEPTUAL APIs:
> 
> 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 );
> 
>    <snip/>
> 
>    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 
> happy.
> 
> -Janek
> 
> 
> --
> To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@jakarta.apache.org>
> For additional commands, e-mail: <mailto:commons-dev-help@jakarta.apache.org>
> 


__________________________________________________
Do you Yahoo!?
Yahoo! Web Hosting - Let the expert host your site
http://webhosting.yahoo.com

--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@jakarta.apache.org>


Mime
View raw message