I tried Sunburn's mod to BasicFeature and it seems to work.

I looked again at Paolo's mod and it looks like it will work.

I have tested my mod and it seems to work.

Larry

On Fri, May 1, 2009 at 10:17 AM, Paolo Rizzi <g...@oicom.com> wrote:

> > An example of the standard usage pattern for JDBC can be seen in:
> > com.vividsolutions.jump.datastore.jdbc.ValueConverterFactory.
> > Regardless of whether you use ResultSet's getObject() or something like
> > getInt(), eventually you are going to need an object representation of
> > the data in order to work with it.  BasicFeature.SetAttribute requires
> > an Object.  So if you did something like: new
> > Integer(rs.getInt(columnIndex)) on a null column , the JavaDoc for
> > ResultSet says you'll get a zero int wrapped in an Integer.
> Zero is not equal to NULL by any means!!!
> The assumption that a zero can be used in place of a NULL is quite bad,
> IMHO. Is exactly the kind of stuff that makes legacy formats like
> shapes, mapinfo, etc. vastly inferior in respect to RDBMSs.
>
> >
> > I appreciate all of the clever solutions, but I will remain convinced
> > that BasicFeature can detect modification without any need for explicit
> > client methods to set it, until someone shows me proof that it can not.
> If you spend a moment to look at the code I attached in my previous
> message you'll see that it works in both cases. Non mod-aware client
> will get the automatic assumption that each and every attributes has to
> be set at least once before init can be considered ended. While
> mod-aware clients can, if they want, set the init status explicitely.
>
> >
> > regards,
> > Larry
> Bye
> Paolo
>
>
> >
> >
> > On Thu, Apr 30, 2009 at 6:24 AM, Paolo Rizzi <g...@oicom.com
> > <mailto:g...@oicom.com>> wrote:
> >
> >     The previous sample code I posted was foolish, I'm sorry!!!
> >
> >     Find attached a better version that uses a single Object reference
> >     to track both initialization and modify state.
> >
> >     During initialization this Object references a byte[] where each
> >     element tracks the init state of the corresponding attribute.
> >
> >     Init ends when all attributes has been set at least once or when the
> >     client code calls a provided method.
> >
> >     After init has ended the byte[] is discarded and the Object
> >     references the static instance of Boolean.FALSE (so there's no
> >     memory wasted beyound the single Object reference itself).
> >
> >     After at least one attributes is set, the Object references the
> >     static instance Boolean.TRUE.
> >
> >     Client code can decide to force init end with a non-modified state
> >     or even an already-modified state, if it likes to.
> >
> >     The code does not check if the new value set for an attribute is
> >     equal or not to the value already present. This is because a ==
> >     check would not be good because two different Integer instances both
> >     containing the same value are to be considered equal.
> >     So the equals() method should be used, but that is not garanteed to
> >     work with all class types, so I think it may be better to skip the
> >     check altogether and consider an attribute modified in any case.
> >
> >     Hope this is helpful!!! :-)
> >
> >     Bye
> >     Paolo
> >
> >
> >
> >     public class BasicFeature {
> >            private Object[] attributes;
> >            private Object mods;
> >
> >            public void forceInitEnded(boolean modified) {
> >                 //force init end and specified modify state
> >               mods = modified ? Boolean.TRUE : Boolean.FALSE;
> >            }
> >
> >            public boolean isInitEnded() {
> >               if( mods instanceof Boolean )     //init ended
> >                 return true;
> >
> >               if( mods == null ) {                                 //if
> >     still null
> >                 mods = new byte[attributes.length];    //create it
> >                 Arrays.fill((byte[])mods,(byte)0);          //fill with
> >     zeros
> >
> >                 return false;   //init not even started
> >               }
> >
> >               for(int i=0;i<((byte[])mods).length;i++)
> >                 if( ((byte[])mods)[i] == 0 )  //if any attribute never
> >     flagged
> >                   return false;          //init not ended
> >
> >               forceInitEnded(false);         //init ended, no mods done
> >
> >               return true;     //init ended
> >            }
> >
> >            public void setAttribute(Object[] newAttributes) {
> >               //call setAttribute() for each element
> >            }
> >
> >            public void setAttribute(int attributeIndex, Object
> >     newAttribute) {
> >               if( isInitEnded() )                  //if init ended
> >                 mods = Boolean.TRUE;               //feature modified
> >               else
> >
> >                   //if init not ended
> >                 ((byte[])mods)[attributeIndex] = 1;   //flag the
> >     attributes mod
> >
> >               attributes[attributeIndex] = newAttribute;
> >            }
> >
> >            public boolean isModified() {
> >               return isInitEnded() ? ((Boolean)mods).booleanValue() :
> false;
> >            }
> >     }
> >
> >
> ------------------------------------------------------------------------------
> >     Register Now & Save for Velocity, the Web Performance & Operations
> >     Conference from O'Reilly Media. Velocity features a full day of
> >     expert-led, hands-on workshops and two days of sessions from industry
> >     leaders in dedicated Performance & Operations tracks. Use code
> vel09scf
> >     and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
> >     _______________________________________________
> >     Jump-pilot-devel mailing list
> >     Jump-pilot-devel@lists.sourceforge.net
> >     <mailto:Jump-pilot-devel@lists.sourceforge.net>
> >     https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> >
> >
> >
> >
> > --
> > http://amusingprogrammer.blogspot.com/
> >
> >
> > ------------------------------------------------------------------------
> >
> >
> ------------------------------------------------------------------------------
> > Register Now & Save for Velocity, the Web Performance & Operations
> > Conference from O'Reilly Media. Velocity features a full day of
> > expert-led, hands-on workshops and two days of sessions from industry
> > leaders in dedicated Performance & Operations tracks. Use code vel09scf
> > and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Jump-pilot-devel mailing list
> > Jump-pilot-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>
>
>
> ------------------------------------------------------------------------------
> Register Now & Save for Velocity, the Web Performance & Operations
> Conference from O'Reilly Media. Velocity features a full day of
> expert-led, hands-on workshops and two days of sessions from industry
> leaders in dedicated Performance & Operations tracks. Use code vel09scf
> and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>



-- 
http://amusingprogrammer.blogspot.com/
------------------------------------------------------------------------------
Register Now & Save for Velocity, the Web Performance & Operations 
Conference from O'Reilly Media. Velocity features a full day of 
expert-led, hands-on workshops and two days of sessions from industry 
leaders in dedicated Performance & Operations tracks. Use code vel09scf 
and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to