Re: [JPP-Devel] A new ThreadQueue ...

2007-05-30 Thread Sascha L. Teichmann
Hi Larry,

Larry Becker schrieb:
> Hi Sascha,
> 
>   Only potentially, but practically speaking my code is blocking the
> GUI thread, and there is nothing running to put more jobs on the
> queue.  The while loop in processQueue will keep maxRunningThreads
> running untill the queue begins to empty.  When is empty, there are no
> more render jobs to process.

This is wrong. Say you have enqueued three jobs.
The defaultRendering ThreadQueue is limited to one Thread running
so all threads are working one after each other. After the first
job has endend, the one and only Thread brings the counter to zero
because this if the only thread working on the jobs. But there are
two more in the queue. It is not important if the GUI thread is
blocked. There are two jobs more to do. And more problems arrive
if you have jobs that are _not_ in the default rendering ThreadQueue
like WMS. They are rendered in truly parallel way with a second
thread. Your 'while (default queue has running threads) sleep(time)'
loop don't test this second queue.

BTW: Didn't you mention that you place a
try { ... } catch (ArrayIndexOutOfBoundsException ex) { ...}
workaround in your SkyJUMP code? Have you ever thought about
the reasons? Looking at the code of OJ I didn't find this
'improvement' ...

>   This has been an interesting discussion, but we could go back and
> forth like this forever.  I admit that you know Threads very well, and
> that your design appears to be better.  I'm simply saying that JUMP
> ThreadQueue is not as bad as you are making it out to be, and that it
> has been working perfectly fine for years now.  Could it be improved?
> Of course, Jon's comments show he was constantly seeking improvements
> to it.  I am just cautious about replacing a critical section of code
> without adequate testing.  Give me a well tested "bad" design over an
> untested good design any day.

I totally agree with you. Never touch a running system. But the system
is not running very well here. Nobody wrote code in the past that needs
precise reliability in this thread issues. This has changed.
And as you say: It's a critical portion of the code. For this kinds
of code I demand 'nearly' (*) mathematical correctness. And talking
about business: I have a customer here how stumbled into this concrete
thread trap. Now I can show him my analysis and my enhancements and how
the issue is able to be fixed. I can send him a patch set against OJ to
make his private copy work. But I prefer to fix the problem at the root
and discuss it with the OJ team.

> Don't get me wrong, I do appreciate your hard work and contribution.
> I just need a little more time to test.

This why are talking about and I'm willing to give you this time. :-)

> regards,
> Larry


(*) Having in mind Knuth's famous quotation about correctness proves and
tests.

Regards,
  Sascha

> 
> On 5/30/07, Sascha L. Teichmann <[EMAIL PROTECTED]> wrote:
>> Hi Larry,
>>
>> the magic word here is 'critical region'
>> Have a look a the finally block.
>> Assume the setRunningThreads(getRunningThreads() - 1) call
>> was executed and the counter went to zero. This is done in Thread A.
>> And now directly comes a context switch to your code
>> in Thread B. Your if statement thinks that there are no
>> jobs any more -> Your loop ends. Context switch back to Thread A.
>> Now the processQueue() call is executed and potentially a
>> new thread is started because the queue is not empty.
>> Counter is zero but queue not empty.
>> Thread programming is delicate, isn't it?
>>
>> - Sascha
>>
>>
>> Larry Becker schrieb:
>>> Hi Sascha,
>>>
>>>   I do not see the difference.  It seems to me that when a task is
>>> finished, the runningThreads count is decremented as in:
>>>
>>> try {
>>> runnable.run();
>>> } finally {
>>> setRunningThreads(getRunningThreads() - 1);
>>> processQueue();
>>> }
>>>
>>> So it would seem to me that when the count reaches zero that there are
>>> no more jobs.
>>>
>>> regards,
>>> Larry
>>>
>>> On 5/30/07, Sascha L. Teichmann <[EMAIL PROTECTED]> wrote:
 Hi Larry,

 The method is named runningThreads(). This was my
 mistake. I will add add get getRunningThreads() to
 reestablish compatibility. Thanks for this hint.

 BTW: You're code:

 while (threadQueue.getRunningThreads() > 0) Thread.sleep(200);

 tests if there are running _threads_ left. This do not tell
 you if there are _jobs_ to to! What you really want to know
 is when the last job is done. See the difference?

 The new RenderingManager will have a new method to archive
 this. It will switch the thread queue to single threaded mode
 and enqueues a special Runnable at the end. Then the calling
 thread is lock with a monitor. If the special Runnable is
 executed the monitor is unlocked and the calling thread continues.
 This is what you want

Re: [JPP-Devel] A new ThreadQueue ...

2007-05-30 Thread Larry Becker
Hi Sascha,

  Only potentially, but practically speaking my code is blocking the
GUI thread, and there is nothing running to put more jobs on the
queue.  The while loop in processQueue will keep maxRunningThreads
running untill the queue begins to empty.  When is empty, there are no
more render jobs to process.

  This has been an interesting discussion, but we could go back and
forth like this forever.  I admit that you know Threads very well, and
that your design appears to be better.  I'm simply saying that JUMP
ThreadQueue is not as bad as you are making it out to be, and that it
has been working perfectly fine for years now.  Could it be improved?
Of course, Jon's comments show he was constantly seeking improvements
to it.  I am just cautious about replacing a critical section of code
without adequate testing.  Give me a well tested "bad" design over an
untested good design any day.

Don't get me wrong, I do appreciate your hard work and contribution.
I just need a little more time to test.

regards,
Larry

On 5/30/07, Sascha L. Teichmann <[EMAIL PROTECTED]> wrote:
> Hi Larry,
>
> the magic word here is 'critical region'
> Have a look a the finally block.
> Assume the setRunningThreads(getRunningThreads() - 1) call
> was executed and the counter went to zero. This is done in Thread A.
> And now directly comes a context switch to your code
> in Thread B. Your if statement thinks that there are no
> jobs any more -> Your loop ends. Context switch back to Thread A.
> Now the processQueue() call is executed and potentially a
> new thread is started because the queue is not empty.
> Counter is zero but queue not empty.
> Thread programming is delicate, isn't it?
>
> - Sascha
>
>
> Larry Becker schrieb:
> > Hi Sascha,
> >
> >   I do not see the difference.  It seems to me that when a task is
> > finished, the runningThreads count is decremented as in:
> >
> > try {
> > runnable.run();
> > } finally {
> > setRunningThreads(getRunningThreads() - 1);
> > processQueue();
> > }
> >
> > So it would seem to me that when the count reaches zero that there are
> > no more jobs.
> >
> > regards,
> > Larry
> >
> > On 5/30/07, Sascha L. Teichmann <[EMAIL PROTECTED]> wrote:
> >> Hi Larry,
> >>
> >> The method is named runningThreads(). This was my
> >> mistake. I will add add get getRunningThreads() to
> >> reestablish compatibility. Thanks for this hint.
> >>
> >> BTW: You're code:
> >>
> >> while (threadQueue.getRunningThreads() > 0) Thread.sleep(200);
> >>
> >> tests if there are running _threads_ left. This do not tell
> >> you if there are _jobs_ to to! What you really want to know
> >> is when the last job is done. See the difference?
> >>
> >> The new RenderingManager will have a new method to archive
> >> this. It will switch the thread queue to single threaded mode
> >> and enqueues a special Runnable at the end. Then the calling
> >> thread is lock with a monitor. If the special Runnable is
> >> executed the monitor is unlocked and the calling thread continues.
> >> This is what you want.
> >>
> >> Switching to single thread mode has the advantage to keep
> >> the correct z order of the layers. This is essential for
> >> printing because you don't want to have any internal repaint()
> >> operations. This causes overdraw. If you render to bitmap this
> >> might be okay, but if you want to send the vector information
> >> to the Graphics2D of the output driver this is not a good idea.
> >>
> >> Kind regards,
> >>   Sascha
> >>
> >>
> >> Larry Becker schrieb:
> >>> It doesn't look like I'm going to have time to test the new
> >>> ThreadQueue anytime soon.  I did plug it in long enough to determine
> >>> that it broke my code that called getRunningThreads() since that
> >>> method is no longer present.  I didn't have time to  look for the new
> >>> method that I should use instead.  I should be able to get back to it
> >>> in a couple of weeks (I'm instructing a class in our software next
> >>> week).
> >>>
> >>> regards,
> >>> Larry
> >>>
> >>> On 5/30/07, Michaël Michaud <[EMAIL PROTECTED]> wrote:
> > Hei Saschachaël
> >
> > i got positive feedback from my colleaque on the changes of the
> > threading stuff.
> > If Michael aggrees too, you can commit
> >
> >
>  As far as I'm concerned, I am really pleased to see Sascha's
>  contribution to the core.
>  OJ really needs contributions from skilled programmers :-) .
> 
>  Michaël
> 
> > stefan
> >
> > Sascha L. Teichmann schrieb:
> >
> >
> >> Hi!
> >>
> >> Stefan Steiniger schrieb:
> >>
> >>
> >>> Similar to Landon I have never touched threading nor heared any 
> >>> lectures
> >>> or read books on it. Thus .. i dont know if it turns out to be good 
> >>> or bad.
> >>> But i know that making things more clean is good objective. Thus, i
> >>> suppo

Re: [JPP-Devel] A new ThreadQueue ...

2007-05-30 Thread Sascha L. Teichmann
Hi Larry,

the magic word here is 'critical region'
Have a look a the finally block.
Assume the setRunningThreads(getRunningThreads() - 1) call
was executed and the counter went to zero. This is done in Thread A.
And now directly comes a context switch to your code
in Thread B. Your if statement thinks that there are no
jobs any more -> Your loop ends. Context switch back to Thread A.
Now the processQueue() call is executed and potentially a
new thread is started because the queue is not empty.
Counter is zero but queue not empty.
Thread programming is delicate, isn't it?

- Sascha


Larry Becker schrieb:
> Hi Sascha,
> 
>   I do not see the difference.  It seems to me that when a task is
> finished, the runningThreads count is decremented as in:
> 
> try {
> runnable.run();
> } finally {
> setRunningThreads(getRunningThreads() - 1);
> processQueue();
> }
> 
> So it would seem to me that when the count reaches zero that there are
> no more jobs.
> 
> regards,
> Larry
> 
> On 5/30/07, Sascha L. Teichmann <[EMAIL PROTECTED]> wrote:
>> Hi Larry,
>>
>> The method is named runningThreads(). This was my
>> mistake. I will add add get getRunningThreads() to
>> reestablish compatibility. Thanks for this hint.
>>
>> BTW: You're code:
>>
>> while (threadQueue.getRunningThreads() > 0) Thread.sleep(200);
>>
>> tests if there are running _threads_ left. This do not tell
>> you if there are _jobs_ to to! What you really want to know
>> is when the last job is done. See the difference?
>>
>> The new RenderingManager will have a new method to archive
>> this. It will switch the thread queue to single threaded mode
>> and enqueues a special Runnable at the end. Then the calling
>> thread is lock with a monitor. If the special Runnable is
>> executed the monitor is unlocked and the calling thread continues.
>> This is what you want.
>>
>> Switching to single thread mode has the advantage to keep
>> the correct z order of the layers. This is essential for
>> printing because you don't want to have any internal repaint()
>> operations. This causes overdraw. If you render to bitmap this
>> might be okay, but if you want to send the vector information
>> to the Graphics2D of the output driver this is not a good idea.
>>
>> Kind regards,
>>   Sascha
>>
>>
>> Larry Becker schrieb:
>>> It doesn't look like I'm going to have time to test the new
>>> ThreadQueue anytime soon.  I did plug it in long enough to determine
>>> that it broke my code that called getRunningThreads() since that
>>> method is no longer present.  I didn't have time to  look for the new
>>> method that I should use instead.  I should be able to get back to it
>>> in a couple of weeks (I'm instructing a class in our software next
>>> week).
>>>
>>> regards,
>>> Larry
>>>
>>> On 5/30/07, Michaël Michaud <[EMAIL PROTECTED]> wrote:
> Hei Saschachaël
>
> i got positive feedback from my colleaque on the changes of the
> threading stuff.
> If Michael aggrees too, you can commit
>
>
 As far as I'm concerned, I am really pleased to see Sascha's
 contribution to the core.
 OJ really needs contributions from skilled programmers :-) .

 Michaël

> stefan
>
> Sascha L. Teichmann schrieb:
>
>
>> Hi!
>>
>> Stefan Steiniger schrieb:
>>
>>
>>> Similar to Landon I have never touched threading nor heared any lectures
>>> or read books on it. Thus .. i dont know if it turns out to be good or 
>>> bad.
>>> But i know that making things more clean is good objective. Thus, i
>>> support the changes. It would be good when we finally change the code,
>>> that you also put into the code some docs or references where you
>>> outline why somethings has changed. (actually I currently would opt to
>>> leave the old code as comment and not to remove entirely)
>>>
>>>
>> The ThreadQueue is JavaDoc'ed but I can add some
>> design notes as well. Keeping old things as comments negates
>> the existence of version control systems.
>> CVS is exactly the time machine you for this.
>> As I pointed out earlier having a ChangeLog would
>> be nice to document motivations and backgrounds for a change. Simply
>> generating a ChangeLog out of the commit messages is convenient but
>> it does not uncover the true potential of such a 'log' file.
>>
>>
>>
>>> Due to my lack of knowledge i forwarded your email to a colleague who
>>> developed a web-service based on JUMP (which runs on a server, see [1]),
>>> an ajax client and recently did some multiprocessor experiments for the
>>> web-services processing.
>>>
>>>
>> I look forward to his comments.
>>
>>
>>
>>> I hope 1) he will look on your proposal and 2) you can wait some days
>>> until he, Larry and Michael got an opinion.
>>>

Re: [JPP-Devel] A new ThreadQueue ...

2007-05-30 Thread Larry Becker
Hi Sascha,

  I do not see the difference.  It seems to me that when a task is
finished, the runningThreads count is decremented as in:

try {
runnable.run();
} finally {
setRunningThreads(getRunningThreads() - 1);
processQueue();
}

So it would seem to me that when the count reaches zero that there are
no more jobs.

regards,
Larry

On 5/30/07, Sascha L. Teichmann <[EMAIL PROTECTED]> wrote:
> Hi Larry,
>
> The method is named runningThreads(). This was my
> mistake. I will add add get getRunningThreads() to
> reestablish compatibility. Thanks for this hint.
>
> BTW: You're code:
>
> while (threadQueue.getRunningThreads() > 0) Thread.sleep(200);
>
> tests if there are running _threads_ left. This do not tell
> you if there are _jobs_ to to! What you really want to know
> is when the last job is done. See the difference?
>
> The new RenderingManager will have a new method to archive
> this. It will switch the thread queue to single threaded mode
> and enqueues a special Runnable at the end. Then the calling
> thread is lock with a monitor. If the special Runnable is
> executed the monitor is unlocked and the calling thread continues.
> This is what you want.
>
> Switching to single thread mode has the advantage to keep
> the correct z order of the layers. This is essential for
> printing because you don't want to have any internal repaint()
> operations. This causes overdraw. If you render to bitmap this
> might be okay, but if you want to send the vector information
> to the Graphics2D of the output driver this is not a good idea.
>
> Kind regards,
>   Sascha
>
>
> Larry Becker schrieb:
> > It doesn't look like I'm going to have time to test the new
> > ThreadQueue anytime soon.  I did plug it in long enough to determine
> > that it broke my code that called getRunningThreads() since that
> > method is no longer present.  I didn't have time to  look for the new
> > method that I should use instead.  I should be able to get back to it
> > in a couple of weeks (I'm instructing a class in our software next
> > week).
> >
> > regards,
> > Larry
> >
> > On 5/30/07, Michaël Michaud <[EMAIL PROTECTED]> wrote:
> >>> Hei Saschachaël
> >>>
> >>> i got positive feedback from my colleaque on the changes of the
> >>> threading stuff.
> >>> If Michael aggrees too, you can commit
> >>>
> >>>
> >> As far as I'm concerned, I am really pleased to see Sascha's
> >> contribution to the core.
> >> OJ really needs contributions from skilled programmers :-) .
> >>
> >> Michaël
> >>
> >>> stefan
> >>>
> >>> Sascha L. Teichmann schrieb:
> >>>
> >>>
>  Hi!
> 
>  Stefan Steiniger schrieb:
> 
> 
> > Similar to Landon I have never touched threading nor heared any lectures
> > or read books on it. Thus .. i dont know if it turns out to be good or 
> > bad.
> > But i know that making things more clean is good objective. Thus, i
> > support the changes. It would be good when we finally change the code,
> > that you also put into the code some docs or references where you
> > outline why somethings has changed. (actually I currently would opt to
> > leave the old code as comment and not to remove entirely)
> >
> >
>  The ThreadQueue is JavaDoc'ed but I can add some
>  design notes as well. Keeping old things as comments negates
>  the existence of version control systems.
>  CVS is exactly the time machine you for this.
>  As I pointed out earlier having a ChangeLog would
>  be nice to document motivations and backgrounds for a change. Simply
>  generating a ChangeLog out of the commit messages is convenient but
>  it does not uncover the true potential of such a 'log' file.
> 
> 
> 
> > Due to my lack of knowledge i forwarded your email to a colleague who
> > developed a web-service based on JUMP (which runs on a server, see [1]),
> > an ajax client and recently did some multiprocessor experiments for the
> > web-services processing.
> >
> >
>  I look forward to his comments.
> 
> 
> 
> > I hope 1) he will look on your proposal and 2) you can wait some days
> > until he, Larry and Michael got an opinion.
> >
> >
>  @Michael: You ask what to change. For the moment just replace
>  ThreadQueue.java with one I've sent last. The first patches
>  are addressing the problem with ThreadQueue limited to one
>  Thread at a time (defaultRenderingThreadQueue in RenderingManger).
>  You can apply these patches too, but they are not needed any
>  longer. With next patch I'll send the this second thread queue
>  will be removed from RenderingManager entirely.
> 
>  What to test? Doing your day-to-day is the best thing
>  you can do. The most important thing is that the new one
>  behaves exactly like the old one. The magic word is compatibility.

Re: [JPP-Devel] A new ThreadQueue ...

2007-05-30 Thread Sascha L. Teichmann
Hi Larry,

The method is named runningThreads(). This was my
mistake. I will add add get getRunningThreads() to
reestablish compatibility. Thanks for this hint.

BTW: You're code:

while (threadQueue.getRunningThreads() > 0) Thread.sleep(200);

tests if there are running _threads_ left. This do not tell
you if there are _jobs_ to to! What you really want to know
is when the last job is done. See the difference?

The new RenderingManager will have a new method to archive
this. It will switch the thread queue to single threaded mode
and enqueues a special Runnable at the end. Then the calling
thread is lock with a monitor. If the special Runnable is
executed the monitor is unlocked and the calling thread continues.
This is what you want.

Switching to single thread mode has the advantage to keep
the correct z order of the layers. This is essential for
printing because you don't want to have any internal repaint()
operations. This causes overdraw. If you render to bitmap this
might be okay, but if you want to send the vector information
to the Graphics2D of the output driver this is not a good idea.

Kind regards,
  Sascha


Larry Becker schrieb:
> It doesn't look like I'm going to have time to test the new
> ThreadQueue anytime soon.  I did plug it in long enough to determine
> that it broke my code that called getRunningThreads() since that
> method is no longer present.  I didn't have time to  look for the new
> method that I should use instead.  I should be able to get back to it
> in a couple of weeks (I'm instructing a class in our software next
> week).
> 
> regards,
> Larry
> 
> On 5/30/07, Michaël Michaud <[EMAIL PROTECTED]> wrote:
>>> Hei Saschachaël
>>>
>>> i got positive feedback from my colleaque on the changes of the
>>> threading stuff.
>>> If Michael aggrees too, you can commit
>>>
>>>
>> As far as I'm concerned, I am really pleased to see Sascha's
>> contribution to the core.
>> OJ really needs contributions from skilled programmers :-) .
>>
>> Michaël
>>
>>> stefan
>>>
>>> Sascha L. Teichmann schrieb:
>>>
>>>
 Hi!

 Stefan Steiniger schrieb:


> Similar to Landon I have never touched threading nor heared any lectures
> or read books on it. Thus .. i dont know if it turns out to be good or 
> bad.
> But i know that making things more clean is good objective. Thus, i
> support the changes. It would be good when we finally change the code,
> that you also put into the code some docs or references where you
> outline why somethings has changed. (actually I currently would opt to
> leave the old code as comment and not to remove entirely)
>
>
 The ThreadQueue is JavaDoc'ed but I can add some
 design notes as well. Keeping old things as comments negates
 the existence of version control systems.
 CVS is exactly the time machine you for this.
 As I pointed out earlier having a ChangeLog would
 be nice to document motivations and backgrounds for a change. Simply
 generating a ChangeLog out of the commit messages is convenient but
 it does not uncover the true potential of such a 'log' file.



> Due to my lack of knowledge i forwarded your email to a colleague who
> developed a web-service based on JUMP (which runs on a server, see [1]),
> an ajax client and recently did some multiprocessor experiments for the
> web-services processing.
>
>
 I look forward to his comments.



> I hope 1) he will look on your proposal and 2) you can wait some days
> until he, Larry and Michael got an opinion.
>
>
 @Michael: You ask what to change. For the moment just replace
 ThreadQueue.java with one I've sent last. The first patches
 are addressing the problem with ThreadQueue limited to one
 Thread at a time (defaultRenderingThreadQueue in RenderingManger).
 You can apply these patches too, but they are not needed any
 longer. With next patch I'll send the this second thread queue
 will be removed from RenderingManager entirely.

 What to test? Doing your day-to-day is the best thing
 you can do. The most important thing is that the new one
 behaves exactly like the old one. The magic word is compatibility.
 I don't want to break the show. Use plug-ins, use many layers,
 use less layer, use db and WMS layers. Do all the fancy stuff
 you like to do. If the OJ freezes or something other looks odd
 just tell me. :-)

 - Sascha



> Michaël Michaud schrieb:
>
>
>> Sascha L. Teichmann a écrit :
>>
>>
>>
>>> Really back to topic:
>>>
>>> Find attached a replacement for ThreadQueue [1].
>>> To use it just overwrite the original one.
>>>
>>>
>>>
>>>
>> Hi Sascha :
>>
>> I think that trying to have a cleaner and more simple code is an
>> excellent goal, and I'd like to help, but I'm not sure I can understand

Re: [JPP-Devel] A new ThreadQueue ...

2007-05-30 Thread Larry Becker
It doesn't look like I'm going to have time to test the new
ThreadQueue anytime soon.  I did plug it in long enough to determine
that it broke my code that called getRunningThreads() since that
method is no longer present.  I didn't have time to  look for the new
method that I should use instead.  I should be able to get back to it
in a couple of weeks (I'm instructing a class in our software next
week).

regards,
Larry

On 5/30/07, Michaël Michaud <[EMAIL PROTECTED]> wrote:
>
> >Hei Saschachaël
> >
> >i got positive feedback from my colleaque on the changes of the
> >threading stuff.
> >If Michael aggrees too, you can commit
> >
> >
> As far as I'm concerned, I am really pleased to see Sascha's
> contribution to the core.
> OJ really needs contributions from skilled programmers :-) .
>
> Michaël
>
> >stefan
> >
> >Sascha L. Teichmann schrieb:
> >
> >
> >>Hi!
> >>
> >>Stefan Steiniger schrieb:
> >>
> >>
> >>>Similar to Landon I have never touched threading nor heared any lectures
> >>>or read books on it. Thus .. i dont know if it turns out to be good or bad.
> >>>But i know that making things more clean is good objective. Thus, i
> >>>support the changes. It would be good when we finally change the code,
> >>>that you also put into the code some docs or references where you
> >>>outline why somethings has changed. (actually I currently would opt to
> >>>leave the old code as comment and not to remove entirely)
> >>>
> >>>
> >>The ThreadQueue is JavaDoc'ed but I can add some
> >>design notes as well. Keeping old things as comments negates
> >>the existence of version control systems.
> >>CVS is exactly the time machine you for this.
> >>As I pointed out earlier having a ChangeLog would
> >>be nice to document motivations and backgrounds for a change. Simply
> >>generating a ChangeLog out of the commit messages is convenient but
> >>it does not uncover the true potential of such a 'log' file.
> >>
> >>
> >>
> >>>Due to my lack of knowledge i forwarded your email to a colleague who
> >>>developed a web-service based on JUMP (which runs on a server, see [1]),
> >>>an ajax client and recently did some multiprocessor experiments for the
> >>>web-services processing.
> >>>
> >>>
> >>I look forward to his comments.
> >>
> >>
> >>
> >>>I hope 1) he will look on your proposal and 2) you can wait some days
> >>>until he, Larry and Michael got an opinion.
> >>>
> >>>
> >>@Michael: You ask what to change. For the moment just replace
> >>ThreadQueue.java with one I've sent last. The first patches
> >>are addressing the problem with ThreadQueue limited to one
> >>Thread at a time (defaultRenderingThreadQueue in RenderingManger).
> >>You can apply these patches too, but they are not needed any
> >>longer. With next patch I'll send the this second thread queue
> >>will be removed from RenderingManager entirely.
> >>
> >>What to test? Doing your day-to-day is the best thing
> >>you can do. The most important thing is that the new one
> >>behaves exactly like the old one. The magic word is compatibility.
> >>I don't want to break the show. Use plug-ins, use many layers,
> >>use less layer, use db and WMS layers. Do all the fancy stuff
> >>you like to do. If the OJ freezes or something other looks odd
> >>just tell me. :-)
> >>
> >>- Sascha
> >>
> >>
> >>
> >>>Michaël Michaud schrieb:
> >>>
> >>>
> Sascha L. Teichmann a écrit :
> 
> 
> 
> >Really back to topic:
> >
> >Find attached a replacement for ThreadQueue [1].
> >To use it just overwrite the original one.
> >
> >
> >
> >
> Hi Sascha :
> 
> I think that trying to have a cleaner and more simple code is an
> excellent goal, and I'd like to help, but I'm not sure I can understand
> all these thread issues.
> If you tell me exactly which classes I must replace (on ly ThreadQueue
> or also the pieces of code from your previous mail) and what kind of
> tests I should do (rendering different kind of layers ? mixing different
> kind of layers), I'll try to make some more tests on my desktop.
> 
> Thanks, for the hard work
> 
> Michaël
> 
> 
> 
> >This one works for the real parallel case of
> >layer rendering too. Each time a thread finished
> >executing its Runnable it looks into the queue
> >if they are more jobs to do. This prevents unnecessary
> >thread creations/shutdowns. If the queue is empty
> >the worker thread is kept alive for 5 seconds waiting
> >for new jobs. This results in a kind of thread pooling.
> >
> >@Larry: I've isolated my implementation and the OJ
> >ThreadQueue and done a synthetic benchmark with a
> >larger number of jobs (10,000+). My implementation
> >works about two orders faster than the OJ one.
> >But this is of little meaning because OJ only
> >has to handle a number of jobs equal the number
> >of layers. This will hardly hit 10,000+ ;-)
> >But again: My mission is improve t

Re: [JPP-Devel] A new ThreadQueue ...

2007-05-30 Thread Michaël Michaud

>Hei Saschachaël
>
>i got positive feedback from my colleaque on the changes of the 
>threading stuff.
>If Michael aggrees too, you can commit
>  
>
As far as I'm concerned, I am really pleased to see Sascha's 
contribution to the core.
OJ really needs contributions from skilled programmers :-) .

Michaël

>stefan
>
>Sascha L. Teichmann schrieb:
>  
>
>>Hi!
>>
>>Stefan Steiniger schrieb:
>>
>>
>>>Similar to Landon I have never touched threading nor heared any lectures 
>>>or read books on it. Thus .. i dont know if it turns out to be good or bad.
>>>But i know that making things more clean is good objective. Thus, i 
>>>support the changes. It would be good when we finally change the code, 
>>>that you also put into the code some docs or references where you 
>>>outline why somethings has changed. (actually I currently would opt to 
>>>leave the old code as comment and not to remove entirely)
>>>  
>>>
>>The ThreadQueue is JavaDoc'ed but I can add some
>>design notes as well. Keeping old things as comments negates
>>the existence of version control systems.
>>CVS is exactly the time machine you for this.
>>As I pointed out earlier having a ChangeLog would
>>be nice to document motivations and backgrounds for a change. Simply
>>generating a ChangeLog out of the commit messages is convenient but
>>it does not uncover the true potential of such a 'log' file.
>>
>>
>>
>>>Due to my lack of knowledge i forwarded your email to a colleague who 
>>>developed a web-service based on JUMP (which runs on a server, see [1]), 
>>>an ajax client and recently did some multiprocessor experiments for the 
>>>web-services processing.
>>>  
>>>
>>I look forward to his comments.
>>
>>
>>
>>>I hope 1) he will look on your proposal and 2) you can wait some days 
>>>until he, Larry and Michael got an opinion.
>>>  
>>>
>>@Michael: You ask what to change. For the moment just replace
>>ThreadQueue.java with one I've sent last. The first patches
>>are addressing the problem with ThreadQueue limited to one
>>Thread at a time (defaultRenderingThreadQueue in RenderingManger).
>>You can apply these patches too, but they are not needed any
>>longer. With next patch I'll send the this second thread queue
>>will be removed from RenderingManager entirely.
>>
>>What to test? Doing your day-to-day is the best thing
>>you can do. The most important thing is that the new one
>>behaves exactly like the old one. The magic word is compatibility.
>>I don't want to break the show. Use plug-ins, use many layers,
>>use less layer, use db and WMS layers. Do all the fancy stuff
>>you like to do. If the OJ freezes or something other looks odd
>>just tell me. :-)
>>
>>- Sascha
>>
>>
>>
>>>Michaël Michaud schrieb:
>>>  
>>>
Sascha L. Teichmann a écrit :



>Really back to topic:
>
>Find attached a replacement for ThreadQueue [1].
>To use it just overwrite the original one.
> 
>
>  
>
Hi Sascha :

I think that trying to have a cleaner and more simple code is an 
excellent goal, and I'd like to help, but I'm not sure I can understand 
all these thread issues.
If you tell me exactly which classes I must replace (on ly ThreadQueue 
or also the pieces of code from your previous mail) and what kind of 
tests I should do (rendering different kind of layers ? mixing different 
kind of layers), I'll try to make some more tests on my desktop.

Thanks, for the hard work

Michaël



>This one works for the real parallel case of
>layer rendering too. Each time a thread finished
>executing its Runnable it looks into the queue
>if they are more jobs to do. This prevents unnecessary
>thread creations/shutdowns. If the queue is empty
>the worker thread is kept alive for 5 seconds waiting
>for new jobs. This results in a kind of thread pooling.
>
>@Larry: I've isolated my implementation and the OJ
>ThreadQueue and done a synthetic benchmark with a
>larger number of jobs (10,000+). My implementation
>works about two orders faster than the OJ one.
>But this is of little meaning because OJ only
>has to handle a number of jobs equal the number
>of layers. This will hardly hit 10,000+ ;-)
>But again: My mission is improve the structure not
>primarily the speed.
>
>I've tested the new ThreadQueue to some extent but
>I'am male(tm) after all ... potentially making mistakes.
>It would be very kind if someone test it too.
>
>My next step will be some clean up in the RenderingManager [2].
>I'am not sure that it is really needed to have two ThreadQueues
>there. The effect of the single tread one can be easily
>simulated with a data structure like the RunnableArrayList which
>I've posted already.
>
>Any comments?
>
>Yours,
> Sascha
>
>[1] com.vividsolutions.jump.workbench.ui.renderer.Thre

Re: [JPP-Devel] A new ThreadQueue ...

2007-05-30 Thread Stefan Steiniger
Hei Sascha

i got positive feedback from my colleaque on the changes of the 
threading stuff.
If Michael aggrees too, you can commit

stefan

Sascha L. Teichmann schrieb:
> Hi!
> 
> Stefan Steiniger schrieb:
>> Similar to Landon I have never touched threading nor heared any lectures 
>> or read books on it. Thus .. i dont know if it turns out to be good or bad.
>> But i know that making things more clean is good objective. Thus, i 
>> support the changes. It would be good when we finally change the code, 
>> that you also put into the code some docs or references where you 
>> outline why somethings has changed. (actually I currently would opt to 
>> leave the old code as comment and not to remove entirely)
> 
> The ThreadQueue is JavaDoc'ed but I can add some
> design notes as well. Keeping old things as comments negates
> the existence of version control systems.
> CVS is exactly the time machine you for this.
> As I pointed out earlier having a ChangeLog would
> be nice to document motivations and backgrounds for a change. Simply
> generating a ChangeLog out of the commit messages is convenient but
> it does not uncover the true potential of such a 'log' file.
> 
>> Due to my lack of knowledge i forwarded your email to a colleague who 
>> developed a web-service based on JUMP (which runs on a server, see [1]), 
>> an ajax client and recently did some multiprocessor experiments for the 
>> web-services processing.
> 
> I look forward to his comments.
> 
>> I hope 1) he will look on your proposal and 2) you can wait some days 
>> until he, Larry and Michael got an opinion.
> 
> @Michael: You ask what to change. For the moment just replace
> ThreadQueue.java with one I've sent last. The first patches
> are addressing the problem with ThreadQueue limited to one
> Thread at a time (defaultRenderingThreadQueue in RenderingManger).
> You can apply these patches too, but they are not needed any
> longer. With next patch I'll send the this second thread queue
> will be removed from RenderingManager entirely.
> 
> What to test? Doing your day-to-day is the best thing
> you can do. The most important thing is that the new one
> behaves exactly like the old one. The magic word is compatibility.
> I don't want to break the show. Use plug-ins, use many layers,
> use less layer, use db and WMS layers. Do all the fancy stuff
> you like to do. If the OJ freezes or something other looks odd
> just tell me. :-)
> 
> - Sascha
> 
>> Michaël Michaud schrieb:
>>> Sascha L. Teichmann a écrit :
>>>
 Really back to topic:

 Find attached a replacement for ThreadQueue [1].
 To use it just overwrite the original one.
  

>>> Hi Sascha :
>>>
>>> I think that trying to have a cleaner and more simple code is an 
>>> excellent goal, and I'd like to help, but I'm not sure I can understand 
>>> all these thread issues.
>>> If you tell me exactly which classes I must replace (on ly ThreadQueue 
>>> or also the pieces of code from your previous mail) and what kind of 
>>> tests I should do (rendering different kind of layers ? mixing different 
>>> kind of layers), I'll try to make some more tests on my desktop.
>>>
>>> Thanks, for the hard work
>>>
>>> Michaël
>>>
 This one works for the real parallel case of
 layer rendering too. Each time a thread finished
 executing its Runnable it looks into the queue
 if they are more jobs to do. This prevents unnecessary
 thread creations/shutdowns. If the queue is empty
 the worker thread is kept alive for 5 seconds waiting
 for new jobs. This results in a kind of thread pooling.

 @Larry: I've isolated my implementation and the OJ
 ThreadQueue and done a synthetic benchmark with a
 larger number of jobs (10,000+). My implementation
 works about two orders faster than the OJ one.
 But this is of little meaning because OJ only
 has to handle a number of jobs equal the number
 of layers. This will hardly hit 10,000+ ;-)
 But again: My mission is improve the structure not
 primarily the speed.

 I've tested the new ThreadQueue to some extent but
 I'am male(tm) after all ... potentially making mistakes.
 It would be very kind if someone test it too.

 My next step will be some clean up in the RenderingManager [2].
 I'am not sure that it is really needed to have two ThreadQueues
 there. The effect of the single tread one can be easily
 simulated with a data structure like the RunnableArrayList which
 I've posted already.

 Any comments?

 Yours,
  Sascha

 [1] com.vividsolutions.jump.workbench.ui.renderer.ThreadQueue
 [2] com.vividsolutions.jump.workbench.ui.renderer.RenderingManager

 Sunburned Surveyor schrieb:
  

> Sascha,
>
> Please accept my sincerest aopologies. I'm afriad my American
> ignorance of other cultures is more than just a little obvious at
> times.
>
> I believe I have made the s

Re: [JPP-Devel] R: Multiple Layers from the same database connection

2007-05-30 Thread Martin Davis
We made the Datastore API cache connections and reuse them if a user 
requested a connection with the same connection params.  So when you 
load layers from a project file they will reuse already-open connections 
whereever they can.

At least, this is how it's *supposed* to work...  it's been a while 
since I wrote that code, and I don't know if anything changed during the 
port to OJ.  Can someone report on this?

P.Rizzi Ag.Mobilità Ambiente wrote:
> I can't completely understand what you're saying...
> Using the Datastore API you can open several layers from
> a single connection...
> You can try my PostGIS/Oracle plugin from:
> http://sourceforge.net/project/showfiles.php?group_id=118054&package_id=217237
>
> But you pointed out something I never realized before,
> that inside a project/task file each layer has it's connection
> parameter repeated, does it mean that when a project/task is opened
> the Datastore API opens a separate connection for each layer???
> I don't know that...
>
> But the connection dialog lists each connection only once, so there
> may be some smart code that "put together" identical connection
> opening them only once.
>
> I'll have to find the time to debug this...
>
> Anyway something able to "group" layers would be a great thing,
> so you can operate on a "group" (or may we call it a theme???)
> as a whole (hide/show, refresh, etc.).
>
> While I'm at it, even if it's not strictly related to this post,
> it would be great to be able to save inside a project/task file 
> also a layer coming from Datastore query, otherwise you to manually
> recreate and restyle it every time you run OJ anew.
>
> Bye
> Paolo Rizzi
>
>
>   
>> -Messaggio originale-
>> Da: [EMAIL PROTECTED]
>> [mailto:[EMAIL PROTECTED] 
>> conto di Paul
>> Austin
>> Inviato: martedì 29 maggio 2007 22.16
>> A: jump-pilot-devel@lists.sourceforge.net
>> Oggetto: [JPP-Devel] Multiple Layers from the same database connection
>>
>>
>> All,
>>
>> I've been looking at the existing database and file plugins and the
>> com.vividsolutions.jump.io.datasource.DataSource class and from what I
>> can tell there is a one to one relationship between a layer and a data
>> source.
>>
>> What I would like to do for some of the file and database based data
>> sources is to have the concept of a DataSource that can contain many
>> different layers. Within a project you would be able to select which
>> layers you wanted to view from that data source.
>>
>> In the database world this concept would relate to having a connection
>> to the data base using a java.sql.Connection. When adding the database
>> connection to a project there would be a UI that would list the
>> available layers (database tables) and the user could select which
>> layers they wish to view. This compares to the current PostGIS plug-in
>> where you have to manually enter the connection and table details for
>> each layer.
>>
>> When the project is closed then the "connection" must also be closed.
>>
>> In the Jump project file the "connection" parameters would be stored
>> once, then the data sources used for each layer would reference the
>> "connection" and have a different query for each table.
>>
>> Now if we look at a file based example, I have a file format which is
>> basically a zip file that contains one file for each layer along with
>> some metadata files. I would like to be able to open the zip file and
>> create a layer for each of the layers in the zip file. To do this I
>> would extract the file to the temp directory and as required load the
>> data from the individual files in the temp directory. Then when you
>> close the project the "connection" is closed by deleting the temporary
>> files.
>>
>> Another file based example would be to open a directory of files,
>> loading each layer file in that directory, this is basically 
>> the same as
>> the zip file idea but without the temporary files.
>>
>> In both the file cases once the file is loaded the first time the user
>> can select which of the layers to view.
>>
>> So the question is, does any of the existing functionality in 
>> JUMP allow
>> for multi-layer data sources? If not I'm going to do some prototyping
>> for the file format I have and then share this with the group for
>> comment to see if it would be useful elsewhere.
>>
>> After that I have an interest in Oracle connections so would 
>> need to do
>> the same kind of thing there.
>>
>> One other question, where would I find the code for writing out the
>> project .jmp XML files as I'd need to add the "connection" definitions
>> to this.
>>
>> Cheers,
>> Paul
>>
>> --
>> ---
>> This SF.net email is sponsored by DB2 Express
>> Download DB2 Express C - the FREE version of DB2 express and take
>> control of your XML. No limits. Just data. Click to get it now.
>> http://sourceforge.net/powerbar/db2/
>> ___
>> Jump-pilot-d

Re: [JPP-Devel] Code Style Standards

2007-05-30 Thread Paul Austin

I think a good set of standards to follow are the Sun Java Code
Conventions. It's a fairly short (ish) standard and avoids all the
variable prefix and class prefix stuff.

http://java.sun.com/docs/codeconv/CodeConventions.pdf

In terms of package imports I don't ever manually type imports any more,
I either use Ctrl-Space to auto add the import when typing a class name
and use the organize imports functionality in eclipse.

Same for code formatting, I take the Eclipse Sun Code Conventions rule
and have it auto format as I type or reformat after cut and paste.

So here is my argument for following code conventions and import/code
formatting guidelines.

If two developers are making a set of changes to some files and they
both auto format the code but using different conventions when they go
to merge their changes with the other developer the diff tool will
highlight a whole bunch of changes for them to review that are just due
to the difference in formatting. So by following the same formatting
rules merging changes should be easier.

I would encourage (not enforce) developers to use Checkstyle
http://checkstyle.sourceforge.net/ to flag as warnings where the code
differs from coding practices that we as a group decide upon. We can
create a config file for checkstyle containing that can be used by the
checkstyle plugin for Eclipse, JBuilder, Netbeans, IntelliJ IDEA, Emacs
JDE, Vim etc.

Those are my thoughts,
Paul

Sunburned Surveyor wrote:
> One of the topics discussed in an earlier thread today was code format
> standards or code style standards.Using tools that will allow us to
> automatically enforce a coding standard was suggested. Using these
> tools to convert existing source code from other JUMP "brands" to our
> style for OpenJUMP was also a suggestion.
>
> I'm really excited that others would be interested in this type of
> consistency and quality for our source code of OpenJUMP. I don't want
> us to loose that momentum!
> However, I'm concerned about implementing such a code style standard
> for a couple of reasons:
>
> [1] I don't think we want to get into a situation where we are
> dictating what IDE, if any, our contributing developers use. I would
> want to make sure that any tools and/or plug-ins that we use for
> automatic code formatting were free from dependencies on a particular
> IDE.
>
> [2] Do we really need to have our contributing developers worry about
> where they put the curly brace in the code? As was mentioned in the
> discussion, I think there are other more important things we can do to
> improve the quality and usability of our code. I'm thinking of things
> like Javadoc comments, other source code comments, change logs, unit
> tests and the like. I'd much rather fight for a requirement that all
> public methods have an intelligent Javadoc comment or something
> similar to that, than push for a standard variable naming convention
> or rules geverning the placement of parentheses and curly braces.
>
> [3] How on Earth would we ever get our developers to agree on a common
> coding standard? I can just imagine the discussions:
> "Should all interfaces and exceptions should share a common prefix in
> their class name?" "Should we ever allow passing a method call as a
> parameter to a method call?"
>
> I just don't think we could all agree on this stuff, do you? I don't
> think it would be worth the bickering to me. Maybe we could just adopt
> an existing standard, but then we would all have to read an learn it,
> and it would probably be different from what we used at work, and
> we're probably to lazy to do it, and…
>
> In summary, if the source code a developer contributes is functional,
> and I can understand what it does when I read it, I am happy.
> Everything else is gravy. I know a lot of open source projects have a
> code style standard, but I think our community is too diverse and
> lacks the strong central authority necessary to make this level of
> control successful.
>
> I am still open to further discussion on this topic. :] If we can
> address some of these basic concerns I am more than willing to learn a
> new tool or coding style. When I say this I speak only for myself, not
> for the other developers or for the project iteself.
>
> The Sunburned Surveyor
>
> -
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> ___
> 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 DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data

[JPP-Devel] Joining tabular data to a layer's attribute.

2007-05-30 Thread Roman Isitua
Hello Guys,
   
  The application i am working on requires loading tabular data from different 
database
systems e.g SQLServer, Oracle. This data changes very frequently and is mainly 
numeric. Reading a table from a database is easy but how can I join such data 
to a layer's attributes. This would have been easy if the data was in 
postgresql, in such a case, one can easily use an SQL join statement.  My 
questions are:
   
  1. How can I join tabular data read from a database system like sql server to 
a layer's attribute ? 
  
2. Are they plans in the future to enable OPENJUMP read/write data to other 
database systems ? 
   
  Roman

   
-
Fussy? Opinionated? Impossible to please? Perfect.  Join Yahoo!'s user panel 
and lay it on us.-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/___
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel


[JPP-Devel] R: Multiple Layers from the same database connection

2007-05-30 Thread P . Rizzi Ag . Mobilità Ambiente
I can't completely understand what you're saying...
Using the Datastore API you can open several layers from
a single connection...
You can try my PostGIS/Oracle plugin from:
http://sourceforge.net/project/showfiles.php?group_id=118054&package_id=217237

But you pointed out something I never realized before,
that inside a project/task file each layer has it's connection
parameter repeated, does it mean that when a project/task is opened
the Datastore API opens a separate connection for each layer???
I don't know that...

But the connection dialog lists each connection only once, so there
may be some smart code that "put together" identical connection
opening them only once.

I'll have to find the time to debug this...

Anyway something able to "group" layers would be a great thing,
so you can operate on a "group" (or may we call it a theme???)
as a whole (hide/show, refresh, etc.).

While I'm at it, even if it's not strictly related to this post,
it would be great to be able to save inside a project/task file 
also a layer coming from Datastore query, otherwise you to manually
recreate and restyle it every time you run OJ anew.

Bye
Paolo Rizzi


> -Messaggio originale-
> Da: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] 
> conto di Paul
> Austin
> Inviato: martedì 29 maggio 2007 22.16
> A: jump-pilot-devel@lists.sourceforge.net
> Oggetto: [JPP-Devel] Multiple Layers from the same database connection
> 
> 
> All,
> 
> I've been looking at the existing database and file plugins and the
> com.vividsolutions.jump.io.datasource.DataSource class and from what I
> can tell there is a one to one relationship between a layer and a data
> source.
> 
> What I would like to do for some of the file and database based data
> sources is to have the concept of a DataSource that can contain many
> different layers. Within a project you would be able to select which
> layers you wanted to view from that data source.
> 
> In the database world this concept would relate to having a connection
> to the data base using a java.sql.Connection. When adding the database
> connection to a project there would be a UI that would list the
> available layers (database tables) and the user could select which
> layers they wish to view. This compares to the current PostGIS plug-in
> where you have to manually enter the connection and table details for
> each layer.
> 
> When the project is closed then the "connection" must also be closed.
> 
> In the Jump project file the "connection" parameters would be stored
> once, then the data sources used for each layer would reference the
> "connection" and have a different query for each table.
> 
> Now if we look at a file based example, I have a file format which is
> basically a zip file that contains one file for each layer along with
> some metadata files. I would like to be able to open the zip file and
> create a layer for each of the layers in the zip file. To do this I
> would extract the file to the temp directory and as required load the
> data from the individual files in the temp directory. Then when you
> close the project the "connection" is closed by deleting the temporary
> files.
> 
> Another file based example would be to open a directory of files,
> loading each layer file in that directory, this is basically 
> the same as
> the zip file idea but without the temporary files.
> 
> In both the file cases once the file is loaded the first time the user
> can select which of the layers to view.
> 
> So the question is, does any of the existing functionality in 
> JUMP allow
> for multi-layer data sources? If not I'm going to do some prototyping
> for the file format I have and then share this with the group for
> comment to see if it would be useful elsewhere.
> 
> After that I have an interest in Oracle connections so would 
> need to do
> the same kind of thing there.
> 
> One other question, where would I find the code for writing out the
> project .jmp XML files as I'd need to add the "connection" definitions
> to this.
> 
> Cheers,
> Paul
> 
> --
> ---
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> ___
> 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 DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ju

[JPP-Devel] R: Code Style Standards

2007-05-30 Thread P . Rizzi Ag . Mobilità Ambiente
Please no...
Writing software it's already a hard job, expecially working software...
There's no way to adopt good coding standards without using tools
that it enable it.
If you work in a big organization they may have a corporate IDE
using corporate standards and, in that case, following those standards
may let you save time, because you don't have to think about how to name things
and the like.
But this is not the case when everyone works on its own using his own preferred 
tools.
Recommendations about comments and package names may be useful, expecially
package names. Also about tests, configurations, etc.
But just recommendations, not anything more strict than that...

Bye
Paolo Rizzi


Programming is a joy but, nonetheless, it's a job too
and it may be a hard one at thatas such, it'It's already 

> -Messaggio originale-
> Da: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] conto di
> Sunburned Surveyor
> Inviato: mercoledì 30 maggio 2007 5.59
> A: List for discussion of JPP development and use.
> Oggetto: Re: [JPP-Devel] Code Style Standards
> 
> 
> Martin,
> 
> Please see my comments below.
> 
> Martin wrote: "Well, now we're getting closer to the bone...  As tools
> have improved
> I've found myself using name prefixes in fewer and fewer situations.
> All the IDEs I've used in the last 6 yrs can easily tell you whether
> something is a class or an interface, and what its parent 
> class is.  So
> I try and avoid embedding too much type metadata in names.  I 
> think this
> is the usual Java convention as well - I've never seen *any* types in
> the Java APIs which use these conventions."
> 
> I can understand the need to be cautious about embedding too much
> metadata in a name. I worked with a guy that like to put all sorts of
> information in a file name. Something like:
> 
> 20070530-Created_By_Sunburned_Surveyor_Read_Only_Peters_Comput
> er_Backup_Directions.txt
> 
> This always drove me crazy. :]
> 
> Martin wrote: "
> I know MS popularized using I* names back in the old COM days, and I
> think they've propagated this into the .Net world as well.  
> Another good
> reason to avoid it, IMO.  Might as well use that lovely m_* convention
> for instance variables, not to mention prefxing every variable with a
> secret code word that reveals its type to those who speak Hungarian...
> 8^)  (Luckily the inventor of this has exiled himself to far 
> earth orbit...)
> "
> 
> Yup. I guess I took my habit of prefixing interfaces with an the
> letter "I" from my days programming in Visual Basic to my Java
> programming. Old habits die hard...
> 
> At any rate, I guess my idea of prefixing class names isn't that
> popular. :] What did you have in mind when you said: "Naming of
> methods, classes and packages is more visible (in increasing
> importance) - articulating some policies here might be helpful." ?
> 
> Thanks,
> 
> The Sunburned Surveyor
> 
> Naming of
> methods, classes and packages is more visible (in increasing 
> importance)
> - articulating some policies here might be helpful.
> 
> On 5/29/07, Larry Becker <[EMAIL PROTECTED]> wrote:
> > Rant on Martin.
> >
> > LOL
> > Larry
> >
> > On 5/29/07, Martin Davis <[EMAIL PROTECTED]> wrote:
> > >
> > >
> > > Sunburned Surveyor wrote:
> > > > Martin,
> > > >
> > > > See my comments below.
> > > >
> > > > Martin wrote: "Naming of
> > > > methods, classes and packages is more visible (in 
> increasing importance)
> > > > - articulating some policies here might be helpful."
> > > >
> > > > You make a good point here. I prefix all of my interfaces with a
> > > > capital "I", all of my exceptions with the prefix 
> "Exc", and all of my
> > > > JUnit tests with the capital letters "JU". I'm not 
> saying that we
> > > > should use this particular convention. I'm just saying 
> that I have
> > > > found it helpful to distinguish interfaces, exceptions, 
> and unit tests
> > > > by their class name. Perhaps we could start our coding 
> standards with
> > > > a discussion of how to make this distinction.
> > > >
> > > Well, now we're getting closer to the bone...  As tools 
> have improved
> > > I've found myself using name prefixes in fewer and fewer 
> situations.
> > > All the IDEs I've used in the last 6 yrs can easily tell 
> you whether
> > > something is a class or an interface

Re: [JPP-Devel] JoinTablePlugin in OPENJUMP 1.2 beta

2007-05-30 Thread Stefan Steiniger
aehmm.. sorry it was on the mouse menu
now in beta 1.2 it is in tools\edit attributes

stefan

Stefan Steiniger schrieb:
> 
> Roman Isitua schrieb:
>> Hello Guys,
>>
>> 1. How can I bring tabular data from a database to
>> openjump ? 
> in jump is a right-mouse-click-on-layer-name function which can be used 
> to add csv-txt file (table) data to a layer
> 
>> 2. Can the JoinTablePlugIn be used to join tabular
>> data from a database or dbase table ?  
> only csv
> 
>> 3. Can tables be linked together instead of being
>> joined ? I think this feature will be needed to handle
>> one to many relationships e.g building occupancy
> 
> yep.. could be a nice feature
> you should add a feature request
> 
>> 4. What is the structure of a .txt table.
> 
> comma separated
>> Thanks,
>>  
>> Roman
>>
>>
>>
>> Looking
>>  for a deal? Find great prices on flights and hotels with Yahoo! FareChase.
>> http://farechase.yahoo.com/
>>
>>
>> -
>> This SF.net email is sponsored by DB2 Express
>> Download DB2 Express C - the FREE version of DB2 express and take
>> control of your XML. No limits. Just data. Click to get it now.
>> http://sourceforge.net/powerbar/db2/
>> ___
>> 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 DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> ___
> 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 DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel


Re: [JPP-Devel] JoinTablePlugin in OPENJUMP 1.2 beta

2007-05-30 Thread Stefan Steiniger


Roman Isitua schrieb:
> Hello Guys,
> 
> 1. How can I bring tabular data from a database to
> openjump ? 
in jump is a right-mouse-click-on-layer-name function which can be used 
to add csv-txt file (table) data to a layer

> 
> 2. Can the JoinTablePlugIn be used to join tabular
> data from a database or dbase table ?  
only csv

> 
> 3. Can tables be linked together instead of being
> joined ? I think this feature will be needed to handle
> one to many relationships e.g building occupancy

yep.. could be a nice feature
you should add a feature request

> 
> 4. What is the structure of a .txt table.

comma separated
> 
> Thanks,
>  
> Roman
> 
> 
>
> Looking
>  for a deal? Find great prices on flights and hotels with Yahoo! FareChase.
> http://farechase.yahoo.com/
> 
> 
> -
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> ___
> 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 DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel