Thanks for the FYI here, Martin, well-needed utilities, for sure.

Cheers,
Chris

On Nov 5, 2012, at 3:29 AM, Martin Desruisseaux wrote:

> Hello all
> 
> In the last days, I didn't ported significant classes. Instead, I worked on 
> some known holes in the existing classes, so this is new code.
> 
> The formatToCharacterIterator(Object) method defined in the java.text.Format 
> class is now implemented by AngleFormat. This allows those who are interested 
> in such information to known which part of the formatted string is the 
> degrees field, which part is the minutes field, etc. It is possible to go 
> down to "which part is the fraction digits of the seconds field" for example. 
> Some Graphical User Interfaces like javax.swing.JFormatterTextField can use 
> this information.
> 
> This information will cascade through SIS Format implementations. So when 
> formatting a metadata object in plain text (non-XML), it will be possible to 
> know for example which part is the north bound latitude field of a geographic 
> bounding box (or the fraction part of the seconds field if someone really 
> wants to go down to that level).
> 
> The implementation details required the port of 
> org.apache.sis.util.ObjectConverter interface. I noticed that Apache Camel 
> has a TypeConverter interface and Spring has a Converter interface. Both uses 
> slightly different approaches, but I think that the Spring's one is closer to 
> the SIS needs. The interface name is ObjectConverter instead than 
> TypeConverter because it does not necessarily change the type; it may just 
> changes the values while keeping the same type.
> 
> Compared to the Spring interface, org.apache.sis.util.ObjectConverter has the 
> same "convert" method (so I think that it will be possible for users to 
> implement both the Spring one and the SIS one by the same class), and the SIS 
> interface defines additional methods for getting some information about the 
> conversion properties. There is many ways we could describe the properties of 
> such conversion, so I tried to stick to concept in uses in mathematics:
> 
>  * is the conversion injective?
>  * is the conversion surjective?
>  * is the conversion order preserving?
>  * is the conversion order reversing?
> 
> The javadoc tries to explain more what "injective" or "surjective" means. 
> Those information become important when we need to take in account the 
> context of the objects we are converting. For example when converting the 
> values of a range, if the conversing is order reversing then we need to swap 
> the min and max values. If the conversion is neither order preserving or 
> reversing (as for example conversions from Integer to String, even if String 
> implements Comparable) then we are not allowed to convert range of values.
> 
>    Martin
> 

Reply via email to