The tricky thing about modifications is not to find a record is modified
just because you set the initial value.  It is only modified if you set it
more than once, otherwise all records would be set as modified as soon as
they are loaded.

The next trick is to consider that you call setAttribute multiple times with
different attribute indexes, so it is necessary to track the changes to each
one separately.

Mutating Geometries in place is a concern.  I have never seen code that does
this, and certainly none of the edit tools or any plugins that use
transactions do this, but it may be possible.  Could you just modify the
Coordinate.x and y values?  I'll try to construct a Beanshell test for this,
but I doubt that this is a serious concern.  All of the tools and plugins
that I have tried so far play by the rules.

Larry

On Thu, Apr 23, 2009 at 2:12 PM, Martin Davis <mbda...@refractions.net>wrote:

> Larry, why do you use an int rather than a boolean to flag changed
> attributes?
>
> BTW, In order to track changes to Geometry attributes correctly, the
> JUMP codebase needs to be scrutinized to make sure it isn't mutating
> Geometries "in place".
>
>
>
> Larry Becker wrote:
> > Hi,
> >
> >   As I mentioned in the other thread, before the problem of partial
> > database updates can be solved, we must first be able to determine if
> > a Feature has been modified.  This is not currently possible in all of
> > the JUMP variants that I am familiar with, although Kosmo may have
> > implemented it.
> >
> > The simplest way of implementing it that I can see is to modify
> > BasicFeature to include:
> >
> > private int[] attributeModCount;  //this is a parallel array to
> > Object[] attributes
> >
> > Then it would be necessary to allocate the attributeModCount array
> > when setAttributes(Object[] attributes) is called.
> >
> > In addition each time setAttribute(int attributeIndex, Object
> > newAttribute) is called, add the line of code:
> >
> > attributeModCount[attributeIndex]++
> >
> > With these modifications we could then define:
> >
> > public boolean isFeatureModified() {
> >     for (int i=0; i<attributeModCount.length; i++) {
> >       if (attributeModCount[i] > 1)  //modified is defined as setting
> > an attribute more than once
> >          return true;
> >     }
> > return false;
> > }
> >
> > Would this work and does this seem like something we should consider?
> >
> > regards,
> > Larry
> > --
> > http://amusingprogrammer.blogspot.com/
> > ------------------------------------------------------------------------
> >
> >
> ------------------------------------------------------------------------------
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Jump-pilot-devel mailing list
> > Jump-pilot-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> >
>
> --
> Martin Davis
> Senior Technical Architect
> Refractions Research, Inc.
> (250) 383-3022
>
>
>
> ------------------------------------------------------------------------------
> Crystal Reports &#45; New Free Runtime and 30 Day Trial
> Check out the new simplified licensign option that enables unlimited
> royalty&#45;free distribution of the report engine for externally facing
> server and web deployment.
> http://p.sf.net/sfu/businessobjects
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>



-- 
http://amusingprogrammer.blogspot.com/
------------------------------------------------------------------------------
Crystal Reports &#45; New Free Runtime and 30 Day Trial
Check out the new simplified licensign option that enables unlimited
royalty&#45;free distribution of the report engine for externally facing 
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to