From: Jan J. <h....@ce...> - 2006-11-13 18:22:28
|
Thanks. The List wrapper seems to be the best approach . I will try to = do so.=20 Cheers, Jan. ______________________________________________________________ > Od: mar...@ge... > Komu: Jan Jezek <h....@ce...> > CC: geotools-devel <geo...@li...> > Datum: 13.11.2006 18:35 > P=F8edm=ECt: Re: [Geotools-devel] More on calculator package > >Jan Jezek a =E9crit : >> * Make Inner class under MappedTriangulatioFactory that will look li= ke old MappedPosition and will be used just for generating map of source a= nd destination triangles. >> OR >> * Rewrite TriangulationFactory to be able to work with new MappedPosition instead of DirectPosition. >> > I prefer the first approach, but may be you can help me how to do this better. >> So what do you think? > > >A third approach is to make MappedPosition extends DirectPosition2D (o= r GeneralDirectPosition) like you did :). But while convenient to impleme= nt, I'm not sure if it is conceptually correct or not. For now I'm not sure because I don't know yet the full builder code enough. This is why the = old MappedPosition is still around for now. > >An other approach which should be efficient and avoid copy is: > > * Changes the Triangulation factory code in order to work with > List<DirectPosition> instead of array of type DirectPosition[]. > > * Write a small class like the one below: > >class MappedPositionList<DirectPosition> extends AbstractList { > private final List<MappedPosition> positions; > > MappedPositionList(List<MappedPosition> positions) { > this.positions =3D positions; > } > > public int size() { > return positions.size(); > } > > public DirectPosition get(int index) { > MappedPosition p =3D positions.get(index); > return p.getTargetPoint(); > } >} > > >Thats all. As you can see, writing List wrappers is pretty easy (we ar= e probably going to have a bunch of casts in the code with J2SE 1.4 inste= ad of 1.5). We may add a 'boolean' argument in order to select between sou= rce and target points. With such wrappers, there is no copy operation at al= l - we just create different "view" of the mapped position list. This view = can be given to the triangulation factory methods. > >Thats why I usually like to recommand usage of Collections over arrays= in API. > >What do you think? > > Martin > |