Paul wrote: "If you have two copies of the application running you can
get a corrupted file if one is trying to load the file while another
is writing to it. Maybe we need a locking mechanism."

You mean like a lock file? That would really be the only thing that
would work across multiple instances of OpenJUMP, correct?

You wrote: "All users share the same properties file unless you change
it in the batch script to point to a user specific directory."

I thought about making an extension of AbstractPlugIn that allowed
access to user-specific properties. If this is a need common to
multiple developers, perhaps we should consider a global solution that
could be used by everyone?

The Sunburned Surveyor

On Tue, May 27, 2008 at 10:57 AM, Paul Austin <[EMAIL PROTECTED]> wrote:
> Sounds like people don't like the preferences API so I won't use it for
> anything in the core JUMP. I'll just use it in my plug-ins where I need
> immediate saving of preferences.
>
> There are a couple of problems with the current persistent blackboard.
>
> If you have two copies of the application running you can get a corrupted
> file if one is trying to load the file while another is writing to it. Maybe
> we need a locking mechanism
> All users share the same properties file unless you change it in the batch
> script to point to a user specific directory
>
> Paul
>
>
> Martin Davis wrote:
>
> I would NOT be in favour of any persistence feature which uses the
> Windows Registry.  It's way too hard to work with.  What's wrong with
> text-based (incl. XML) config files located in the application directory
> itself?
> The other problem with the Registry is that it effectively limits you to
> a single version of the JUMP application.  It's very useful to have a
> design which keeps all JUMP config files in the directory for the
> instance that created them.  Then you can easily have multiple
> instances, multiple versions, and copy them from machine to machine.
> And then of course there's the issue with backwards compatibility, both
> with installed base, existing code, and existing design.
> Paul Austin wrote:
>
>
> The (persistent) blackboard at the moment is for the whole workbench
> and not specific to a project. There are blackboards for other things
> such as a layer but not for a task. For tasks I don't see the benefit
> of having a blackboard on a task to store the properties, they might
> was well go directly on the task. In terms of saving the properties on
> a task it uses the XML2Java class to serialize it, so all you would
> need to do is make sure each property could be serialized and read by
> that class. I would have it so that if an object could not be
> serialized it would be ignored with a warning written. We could also
> add guidelines that say what kinds of values are supported for
> properties such as all primitive types, Strings and QNames. Most
> properties would be these anyway.
> For the previous projection request I had, the plan would be that this
> would be a property added to the task using this new mechanism.
> I was also thinking of having a Class with constants listing all of
> the "standard" properties supported in OpenJump. This class would be
> called something like OpenJumpTaskProperties.
> For things that the persistent blackboard is used for I'd actually
> prefer to switch over to using the Java Preferences API. The advantage
> of this is you can support user v.s. computer based saved
> configuration. The configuration is saved immediately rather than when
> you exit the application. And the config is saved in a location (e.g.
> windows registry) that is specific to the platform.
> Paul
> *Paul Austin*
> /President/CEO/
> Revolution Systems Inc.
> +1 (604) 288-4304 x201
> www.revolsys.com <http://www.revolsys.com>
> Stefan Steiniger wrote:
>
>
> in general I support Pauls idea, although I am wondering what has been
> happened to the first request on adding a Projection property to the Taks.
> But Paul, can you also say why it is better to have properties than
> using the blackboard? I could imagine, that one simply knows what type
> of properties exist - while on the blackboard could be anything. But how
> do I know which properties are existent?
> @Larry and Andreas: Any comments from you on that?
> (I ask you too as you have way more programming experience than I
> have... i.e. I am rather part of the "weeks" group outlined in the memo
> thread ;o)
> cheers
> stefan
> Sunburned Surveyor schrieb:
>
>
>
> Paul wrote: "I would like to extend the Task class to support
> properties. Properties
> can be set by plug-ins on the task."
> I wonder if we could use a Blackboard and PersistentBlackboardPlugIn
> to accomplish this?
> http://jump-pilot.sourceforge.net/javadoc/openjump_javadoc/com/vividsolutions/jump/workbench/ui/plugin/PersistentBlackboardPlugIn.html
> http://jump-pilot.sourceforge.net/javadoc/openjump_javadoc/com/vividsolutions/jump/util/Blackboard.html
> This would keep things a little simpler, as we'd be using classes that
> are already present in OpenJUMP.
> This is just a suggestion.
> If we support Objects, how will we represent their state when we write
> the data to the Task file? Will we just call toString on the  object,
> or will there be another method?
> The Sunburned Surveyor
> On Sat, May 24, 2008 at 8:55 AM, Paul Austin <[EMAIL PROTECTED]>
> wrote:
>
>
>
> Michael,
> The magic is new in JDK 1.5 generics. It's a generic method the <T> means
> that at compile time it should deduce anywhere it sees T (T can be anything
> you want) in the method based on the actual classes used.
> So in the below example we use T as the return type so the compiler can pick
> this up from your assignment statement Integer i = task.getProperty(...) and
> then use Integer where ever it sees T.
> public <T> T getProperty(QName name) {
>   return (T)properties.get(name);
> }
> This just makes your code a lot easier to read as you don't have to cast in
> your code
> http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf section 5 generic
> methods
> Paul
> Michael Michaud wrote:
> Paul Austin a écrit :
> I would like to extend the Task class to support properties. Properties
> can be set by plug-ins on the task. An example of a property would be
> the SRID for the whole task. This will allow us to support extended
> metadata on tasks without having to add new methods each time or
> subclassing.
> Seems to be a good idea to me.
> I propose to use QName's as the key for the keys for the properties.
> This would allow different namespaces for different applications.
> The change would include the following.
> private void Map<QName,Object> properties = new HashMap<QName,Object>();
> public void setProperty(QName name, Object value) {
>   properties.put(name, value);
> }
> /**
>  * This will auto cast so you can just type things like
> *  int value = getProperty(MY_KEY);
>  */
> public <T> T getProperty(QName name) {
>   return (T)properties.get(name);
> }
> Hey, looks like magic code.
> I cannot understand how the type T can be used in an object method if it
> has not been declared in the class definition.
> Can really the jvm know how to cast properties.get(KEY) while the object
> associated with this key can be any Object value?
> Michaël
> public Map<QName,Object> getProperties() {
> }
> We'd also need to have it setup so this would be saved to the project file.
> Any suggestions/comments?
> Paul
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>
>
>
> ------------------------------------------------------------------------
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> ------------------------------------------------------------------------
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>
>
>
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>
>

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to