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 <[EMAIL PROTECTED]> wrote: > Hi Travis, > > On Thursday 14 November 2002 4:21 am, [EMAIL PROTECTED] 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>
