Hi Emmanuel, I'm not familiar of what kind of API a gis expert would expect so I'm commenting only as a JPA user who might need to introduce some "close to" feature.
Assuming we can get the API to support overloading without enforcing the JTS library as a hard dependency, could we do something like: SomeType centeredOn(JTSLocation jts); // for the more experts SomeType centeredOn(long latitude, long longitude); // the simple one [cut] > > To answer your question on "centeredOn", I'd avoid a strong dependency > on JTS. The "Object" option you propose could be an interface, and we > create a factory class which returns them; users should then be able > to use the JTS enabled factory or a dumb one. How would that look in practice? Maybe it can't work, I was thinking loud about some in this style: SomeType centeredOn(LocationInterface obj); And have an helper class which provides different builder-like constructs: LocationInterface createLocation(JTSLocation jts); LocationInterface createLocation(long latitude, long longitude); LocationInterface createLocation(...); The idea is that you could have two of these helper classes, one bundled in the search-gis module having the more expressive JTS methods as well, and a simpler one included in the search-engine. Also this would make sure the Query fluent API doesn't get too complex while adding additional (and possibly custom) implementations for LocationInterface; as a user I'd likely want to create my own implementation. (I wouldn't call it "LocationInterface", just to stress I'm thinking of an interface) On 19 December 2011 13:15, Emmanuel Bernard <emman...@hibernate.org> wrote: > > On 5 déc. 2011, at 17:01, Sanne Grinovero wrote: > >> To answer your question on "centeredOn", I'd avoid a strong dependency >> on JTS. The "Object" option you propose could be an interface, and we >> create a factory class which returns them; users should then be able >> to use the JTS enabled factory or a dumb one. > > I've been thinking about your approach but I don't find it too appealing > > ## Solution 1 > SomeType centeredOn(Object jts); > > .centeredOn( location.getPoint() ); > > ## Solution 2 > > SomeType centeredOn(LocationFactory factory); > > .centeredOn( new JTSLocation( location.getPoint() ) ); > > To me solution 2 adds verbosity and is not a lot more typesafe. Granted, the > user will have to find an impl of LocationFactory that matches its need, so > the type system guides him a bit more than raw Object. > > Is the extra verbosity worth the extra help here? > > Emmanuel I'm not really understanding solution #2 ..how is this LocationFactory affecting the query? #1 seems ok. Another question; quoting first email again: "Using a specific interface implemented by the entity: `o.h.s.spatial.Coordinates`" but then your Address of the example doesn't implement Coordinates; did you forget the "implements", or do you intend to just look for the method signatures of public double getLatitude() ? Sanne _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev