<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DEAHSX8yeSp7ImA9WhRVGEw.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236</id><updated>2012-01-17T17:12:18.191+01:00</updated><category term="web based ide" /><category term="connector" /><category term="launchd" /><category term="app store" /><category term="helios" /><category term="Microsoft" /><category term="Team Foundation Server" /><category term="MVC" /><category term="eventum" /><category term="development" /><category term="ipad" /><category term="WorkbenchMarkerResolution" /><category term="youtube" /><category term="UNION queries" /><category term="system preferences" /><category term="Demo camp" /><category term="linked resources" /><category term="equinox" /><category term="MDA" /><category term="John Gall" /><category term="mac osx" /><category term="typewriter" /><category term="osgi" /><category term="marketplace" /><category term="IMarkerResolution2" /><category term="online lighting design" /><category term="sopera" /><category term="services" /><category term="handling complexity" /><category term="branding" /><category term="safari" /><category term="ibatis" /><category term="orion" /><category term="function keys" /><category term="mysql" /><category term="startup" /><category term="Jobs" /><category term="pmf" /><category term="Mylyn" /><category term="perspective help action PerspectiveAdapter" /><category term="hudson" /><category term="googlecode" /><category term="plist" /><category term="Default Perspective" /><category term="NullController" /><category term="DUTCH ECLIPSE USER GROUP" /><category term="galileo" /><category term="RCP" /><category term="integration" /><category term="eulumdat" /><category term="sql" /><category term="build" /><category term="twitter" /><category term="Eclipse" /><category term="icon" /><category term="Quick Fix" /><category term="eclipselabs.org" /><category term="lombok" /><category term="modeling" /><category term="twitter4j" /><category term="e4" /><category term="industrial" /><category term="attachments" /><category term="discovery" /><title>eclipsophy</title><subtitle type="html">What I find out about eclipse while developing and maintaining specialist RCP applications and contributing to Mylyn.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://eclipsophy.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>35</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Eclipsophy" /><feedburner:info uri="eclipsophy" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;D08HRHw8cCp7ImA9WhZaE0s.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-7562766962499973190</id><published>2011-06-29T08:53:00.003+02:00</published><updated>2011-06-29T18:43:55.278+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-29T18:43:55.278+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="orion" /><category scheme="http://www.blogger.com/atom/ns#" term="Team Foundation Server" /><category scheme="http://www.blogger.com/atom/ns#" term="development" /><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="osgi" /><category scheme="http://www.blogger.com/atom/ns#" term="Demo camp" /><category scheme="http://www.blogger.com/atom/ns#" term="modeling" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><title>Eclipse Indigo Democamp at Microsoft!</title><content type="html">&lt;p&gt;World peace may be next! Today the &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Indigo_2011/Amsterdam"&gt;Eclipse Indigo Democamp&lt;/a&gt; in the Netherlands, was held at the Schiphol/Amsterdam  office of &lt;a href="http://www.microsoft.com/nl/nl/"&gt;Microsoft Nederland&lt;/a&gt;. This unexpected mix of topic and venue raised many eyebrows (and tweets) in the Dutch developer communities on both sides. It turned out to be a very a very informative and enjoyable evening, with seven presentations in all.&lt;/p&gt;&lt;p&gt;&lt;img style="display:block; margin-left:auto; margin-right:auto;" src="http://lh5.ggpht.com/-5fLPehseUrU/TgrKralJrJI/AAAAAAAAJMA/JlbCboCAUeA/D7K_2905.jpg?imgmax=800" alt="D7K 2905" title="D7K_2905.jpg" border="0" width="300" height="200" /&gt; Wim Hoek of &lt;a href="http://www.microsoft.com/nl/nl/"&gt;Microsoft Nederland&lt;/a&gt; welcomes all visitors to this democamp and refers to various tweets about the meeting of these two camps. The reason is simple: Microsoft is about developers, developers, developers. And that includes developers using Eclipse.&lt;/p&gt;&lt;p&gt;&lt;img style="display:block; margin-left:auto; margin-right:auto;" src="http://lh3.ggpht.com/-t-S9RwxjfnI/TgrKsMecNuI/AAAAAAAAJME/ubjaAtgFN9U/D7K_2907.jpg?imgmax=800" alt="D7K 2907" title="D7K_2907.jpg" border="0" width="300" height="200" /&gt; Yuri Kok of &lt;a href="http://www.industrial-tsi.com/"&gt;Industrial TSI&lt;/a&gt; welcomes and explains the program.&lt;/p&gt;&lt;p&gt;&lt;img style="display:block; margin-left:auto; margin-right:auto;" src="http://lh3.ggpht.com/-kwsmIvMsZvM/TgrKszbFkyI/AAAAAAAAJMI/XmmaaUjXax4/D7K_2910.jpg?imgmax=800" alt="D7K 2910" title="D7K_2910.jpg" border="0" width="300" height="200" /&gt;Wim Jongman, eclipse committer on ECF and with &lt;a href="http://www.industrial-tsi.com/"&gt;Industrial TSI&lt;/a&gt;, introduces Orion with some quiz questions, but he does not get to give away many prizes.&lt;/p&gt;&lt;p&gt;&lt;img style="display:block; margin-left:auto; margin-right:auto;" src="http://lh5.ggpht.com/-ISK4neHCX58/TgrKqltMovI/AAAAAAAAJL8/SNOeifkIPj0/D7K_2913.jpg?imgmax=800" alt="D7K 2913" title="D7K_2913.jpg" border="0" width="300" height="200" /&gt;Next he talksed about how to run OSGi with plugins et all inside an web or application server, allowing Eclipse developers to leverage their RCP/plugin skills on the server.&lt;/p&gt;&lt;img style="display:block; margin-left:auto; margin-right:auto;" src="http://lh5.ggpht.com/-iGxNt72M13M/TgrLJMqGXMI/AAAAAAAAJMM/PdfpcVZ_m44/D7K_2914.jpg?imgmax=800" alt="D7K 2914" title="D7K_2914.jpg" border="0" width="300" height="199" /&gt;About 30 people attended, I suspect mostly from the Dutch Eclipse world.&lt;p&gt;&lt;/p&gt;&lt;img style="display:block; margin-left:auto; margin-right:auto;" src="http://lh4.ggpht.com/-TZoFh6Htcr0/TgrLJ3y-qXI/AAAAAAAAJMQ/OOMoqIxkD1w/D7K_2917.jpg?imgmax=800" alt="D7K 2917" title="D7K_2917.jpg" border="0" width="300" height="200" /&gt;Jos Warmer presented a case about using modelling in the insurance industry with an RCP client with a graphical policy design editor, based on &lt;a href="http://www.eclipse.org/graphiti/"&gt;Graphiti&lt;/a&gt; and created with &lt;a href="http://code.google.com/a/eclipselabs.org/p/spray/"&gt;Spray&lt;/a&gt;, a DSL to generate Graphiti shapes. Note that Spray will become OSS at sometime in the future! Currently the link leads to an empty project.&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="display:block; margin-left:auto; margin-right:auto;" src="http://lh5.ggpht.com/-r9XWbX2GYk4/TgrLKQF1flI/AAAAAAAAJMU/l4urmgvjq5c/D7K_2919.jpg?imgmax=800" alt="D7K 2919" title="D7K_2919.jpg" border="0" width="300" height="199" /&gt;Next was a break with very nice hospitality in the very impressive Microsoft building, thank you Microsoft!&lt;p&gt;&lt;/p&gt;&lt;img style="display:block; margin-left:auto; margin-right:auto;" src="http://lh4.ggpht.com/-pzy96E9NXQE/TgrLLL3NkrI/AAAAAAAAJMY/GstqFszkqRk/D7K_2923.jpg?imgmax=800" alt="D7K 2923" title="D7K_2923.jpg" border="0" width="300" height="200" /&gt;Roald Hopman explained the use of &lt;a href="http://www.talend.com/"&gt;Talend Open Studio&lt;/a&gt; for data clean up and migration&lt;/p&gt;&lt;p&gt;&lt;img style="display:block; margin-left:auto; margin-right:auto;" src="http://lh6.ggpht.com/-0BPUw3Dr9c0/TgrLL0NYK5I/AAAAAAAAJMc/YqhQK2Q71uA/D7K_2927.jpg?imgmax=800" alt="D7K 2927" title="D7K_2927.jpg" border="0" width="300" height="200" /&gt;It's obvious that Dutch meeting rooms are best suited to native Dutchmen, the tallest people in the world after the Masai. But that didn't prevent Martin Woodward to give a very fast and extensive presentation on &lt;a href="http://www.microsoft.com/netherlands/visualstudio/products/2010-editions/team-foundation-server"&gt;Microsoft Team Foundation Server&lt;/a&gt; and demonstrating the Team Foundation Eclipse (TFE) plugin. TFE is truly a first class citizen on Team Foundation Server, running fast and well integrated on an Eclipse instance running on a MacBook pro. &lt;/p&gt;&lt;p&gt;&lt;img style="display:block; margin-left:auto; margin-right:auto;" src="http://lh6.ggpht.com/-GgNcgisf1bg/TgrLOBbPCmI/AAAAAAAAJMo/oqA7p_RdF-0/D7K_2929.jpg?imgmax=800" alt="D7K 2929" title="D7K_2929.jpg" border="0" width="300" height="200" /&gt;This may be a very good solution for developer shops running windows and other platforms (Mac/Linux/Mobile) and integrates access from Visual Studio and Eclipse into one ALM solution. I like the concept of &lt;em&gt;gated commits&lt;/em&gt;: requiring successful CI tests before actual committing.&lt;/p&gt;&lt;p&gt;&lt;img style="display:block; margin-left:auto; margin-right:auto;" src="http://lh3.ggpht.com/-z32bFTkL17w/TgrLOyRRO_I/AAAAAAAAJMs/9SWsz-zEqmU/D7K_2934.jpg?imgmax=800" alt="D7K 2934" title="D7K_2934.jpg" border="0" width="300" height="200" /&gt;Other found it interesting as well as many people wanted more info afterwards instead of going out for the break.&lt;/p&gt;&lt;p&gt;&lt;img style="display:block; margin-left:auto; margin-right:auto;" src="http://lh4.ggpht.com/-pioua8KgZpI/TgrLPaLQCnI/AAAAAAAAJMw/0tnhgLzbFxc/D7K_2939.jpg?imgmax=800" alt="D7K 2939" title="D7K_2939.jpg" border="0" width="300" height="198" /&gt;Teun Hakvoort talked about his experiences using the Windows Azure cloud platform for running a Java Enterprise container. Possible but not ready for prime time.&lt;/p&gt;&lt;p&gt;&lt;img style="display:block; margin-left:auto; margin-right:auto;" src="http://lh4.ggpht.com/-VzqkMwmBGd8/TgrLQbT4L7I/AAAAAAAAJM0/j0VsGha6oLU/D7K_2943.jpg?imgmax=800" alt="D7K 2943" title="D7K_2943.jpg" border="0" width="300" height="200" /&gt;Finally Manuel Polling of &lt;a href="http://www.edmond.nl/"&gt;Edmond Document Solutions&lt;/a&gt; talked about the use of an RCP based workbench for professional document workflow solutions and their switch to and experience developing a graphical workflow editor.&lt;/p&gt;&lt;p&gt;&lt;img style="display:block; margin-left:auto; margin-right:auto;" src="http://lh5.ggpht.com/-xTWWNttf6nA/TgrLRTA5jxI/AAAAAAAAJM4/0TDFdzxZo3U/D7K_2944.jpg?imgmax=800" alt="D7K 2944" title="D7K_2944.jpg" border="0" width="400" height="160" /&gt;The evening concluded with lively discussions over drinks.&lt;/p&gt;&lt;h2&gt;Thank you to Microsoft and Industrial TSI!&lt;/h2&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-7562766962499973190?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/i4iK6cCJMoV9E4XMYb7cG27fwBE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i4iK6cCJMoV9E4XMYb7cG27fwBE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/i4iK6cCJMoV9E4XMYb7cG27fwBE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i4iK6cCJMoV9E4XMYb7cG27fwBE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/Kw-Djc1CrvY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/7562766962499973190/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2011/06/eclipse-indigo-democamp-at-microsoft.html#comment-form" title="0 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/7562766962499973190?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/7562766962499973190?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/Kw-Djc1CrvY/eclipse-indigo-democamp-at-microsoft.html" title="Eclipse Indigo Democamp at Microsoft!" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-5fLPehseUrU/TgrKralJrJI/AAAAAAAAJMA/JlbCboCAUeA/s72-c/D7K_2905.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2011/06/eclipse-indigo-democamp-at-microsoft.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IGR3k6fyp7ImA9Wx9bE0o.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-7537835480168936122</id><published>2011-02-22T13:49:00.002+01:00</published><updated>2011-02-22T13:58:46.717+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-22T13:58:46.717+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="eclipselabs.org" /><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="Mylyn" /><category scheme="http://www.blogger.com/atom/ns#" term="googlecode" /><title>The sorry state of Mylyn connectors for Google Code/EclipseLabs</title><content type="html">The Eclipse Wiki says there are two connectors to use Mylyn with GoogleCode and/or Eclipse Labs. Unfortunately both are in alpha state and have seen little action lately. That is the reason for the deliberately provocative title of this post.&lt;br /&gt;
&lt;h4&gt;Googlecode Mylyn Connector&lt;/h4&gt;&lt;a href="http://code.google.com/p/googlecode-mylyn-connector/"&gt;Googlecode Mylyn Connector&lt;/a&gt; is licensed under Eclipse Public License 1.0.&lt;br /&gt;
This is the more extensive project, but is has a few open issues that depend on issues with GoogleCode's API itself. So the GoogleCode API must first expose more functionality for this connector to move past alpha.&lt;br /&gt;
Most notable are:&lt;ul&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/googlecode-mylyn-connector/issues/detail?id=7"&gt;Issue 7&lt;/a&gt; Need way to get label values, this depends on &lt;a href="http://code.google.com/p/support/issues/detail?id=3203"&gt;Google Code Issue 3203&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://code.google.com/p/googlecode-mylyn-connector/issues/detail?id=18"&gt;Issue 18&lt;/a&gt; Support Attachments (for Mylyn this includes shared Task Contexts!), this depends on &lt;a href="http://code.google.com/p/support/issues/detail?id=3213"&gt;Google Code Issue 3213&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://code.google.com/p/googlecode-mylyn-connector/issues/detail?id=11"&gt;Issue 11&lt;/a&gt; Support querys with filters, this may relate to problems formulating server side queries as well.&lt;/li&gt;
&lt;/ul&gt;&lt;h4&gt;Project Hosting connector for Mylyn&lt;/h4&gt;&lt;a href="http://code.google.com/a/eclipselabs.org/p/projecthosting-connector-for-mylyn/"&gt;Project Hosting connector for Mylyn&lt;/a&gt; is licensed under Apache License 2.0.&lt;br /&gt;
&lt;blockquote&gt;... One of the main goals of the project is to have a similar look-and-feel for the user interface to the one already provided on Google Code.&lt;/blockquote&gt;&lt;blockquote&gt;The functionality is limited to read-only interaction at this time, but ability to enter new issues is under development.&lt;br /&gt;
&lt;/blockquote&gt;The project has two members. Reading the project site it seems that it is read only access and focus on HTML layout in the editor. Not a lot appears to be happening here so I think this project is abandoned.&lt;br /&gt;
&lt;h4&gt;What can be done about this?&lt;/h4&gt;&lt;a href="http://www.eclipse.org/mylyn/"&gt;Mylyn&lt;/a&gt; is the biggest develper productivity enhancer in recent years. Many commercial SCM vendors provide connectors made by or helped by &lt;a href="http://www.tasktop.com/"&gt;Tasktop&lt;/a&gt;. &lt;br /&gt;
Google depends on and contributes to Eclipse in a big way (&lt;a href="http://code.google.com/javadevtools/wbpro/index.html"&gt;WindowBuilder&lt;/a&gt;, &lt;a href="http://code.google.com/javadevtools/codepro/doc/index.html"&gt;CodePro Analytix&lt;/a&gt;, &lt;a href="http://code.google.com/appengine/"&gt;AppEngine&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
I strongly feel that OSS community deserves a good Mylyn connector for the very accessible open source repository where SCM, Issue tracking and documentation all come together that is provide by Google Code/EclipseLabs! So this should be taken to the next step.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;So I'm going to volunteer at the Googlecode Mylyn Connector to help resolve some of the Mylyn specific issues using everything I learned contributing to Mylyn itself and creating the &lt;a href="http://code.google.com/a/eclipselabs.org/p/industrial-mylyn/"&gt;Industrial Mylyn Connector&lt;/a&gt; for connecting to SQL databases.&lt;/li&gt;
&lt;li&gt;&lt;br /&gt;
But I'm also calling on readers of of this blog and Planet Eclipse to add comments and votes/stars to the issues in the GoogleCode Support pages listed above to raise the profile.&lt;/li&gt;
&lt;/ul&gt;So now I'm going to check out the code and start looking at some issues. I will keep you posted...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-7537835480168936122?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LP-HfM0Iufx_WZrhGZOb82jRjII/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LP-HfM0Iufx_WZrhGZOb82jRjII/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LP-HfM0Iufx_WZrhGZOb82jRjII/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LP-HfM0Iufx_WZrhGZOb82jRjII/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/gStrpPatpGc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/7537835480168936122/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2011/02/sorry-state-of-mylyn-connectors-for.html#comment-form" title="2 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/7537835480168936122?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/7537835480168936122?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/gStrpPatpGc/sorry-state-of-mylyn-connectors-for.html" title="The sorry state of Mylyn connectors for Google Code/EclipseLabs" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2011/02/sorry-state-of-mylyn-connectors-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEGRHwzfyp7ImA9Wx9XGE8.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-2586851374744770139</id><published>2011-01-12T10:29:00.001+01:00</published><updated>2011-01-12T10:30:25.287+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-12T10:30:25.287+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="orion" /><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="web based ide" /><category scheme="http://www.blogger.com/atom/ns#" term="ipad" /><title>Eclipse Orion on Mac OSX and iPad</title><content type="html">Yesterday I &lt;a href="http://eclipsophy.blogspot.com/2011/01/eclipse-orion-first-impressions-and.html"&gt;blogged&lt;/a&gt; about setting up Eclipse Orion on MAc OSX and trying to access it from an iPad. Today I continue my exploration and share some comments on setup tuning and clarifications of the as yet sparse documentation on the &lt;a href="http://wiki.eclipse.org/Orion"&gt;Orion Eclipsepedia&lt;/a&gt;.&lt;h4&gt;Stopping the server on Mac OSX doesn't work&lt;/h4&gt;When you startup up Orion as instructed in the &lt;a href="http://wiki.eclipse.org/Orion/How_Tos/Running_0.2_M4#Downloading_and_running_Orion"&gt;wiki&lt;/a&gt;it starts up without access to the console. You can see all the log messages by starting up the &lt;em&gt;Console&lt;/em&gt; application, but you cannot tell Orion to &lt;code&gt;close&lt;/code&gt;. To enable keyboard access to the osgi console, you need to do the following:&lt;ul&gt;&lt;li&gt;Open the &lt;em&gt;eclipse&lt;/em&gt; package using control-click and &lt;em&gt;Show Package Contents&lt;/em&gt;.&lt;br /&gt;
Create an alias to the file &lt;code&gt;Contents/MacOS/eclipse&lt;/code&gt;.&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_j0a2Zacz7c0/TS1w9yHxX_I/AAAAAAAAIck/E6gltVpjOAw/s1600/eclipse-create-alias.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="136" width="320" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/TS1w9yHxX_I/AAAAAAAAIck/E6gltVpjOAw/s320/eclipse-create-alias.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Rename this alias to &lt;code&gt;eclipse-orion&lt;/code&gt; to the root folder.&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_j0a2Zacz7c0/TS1w-OXdkyI/AAAAAAAAIcs/prDCu-UV4nk/s1600/orion-root-alias.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="152" width="320" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/TS1w-OXdkyI/AAAAAAAAIcs/prDCu-UV4nk/s320/orion-root-alias.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Now you can double click the alias and orion is started but you have access to the osgi console in a &lt;em&gt;Terminal&lt;/em&gt; window.&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_j0a2Zacz7c0/TS1yeFfuUMI/AAAAAAAAIdA/-V6V3BU2WmA/s1600/orion-osgi-console.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="184" width="320" src="http://2.bp.blogspot.com/_j0a2Zacz7c0/TS1yeFfuUMI/AAAAAAAAIdA/-V6V3BU2WmA/s320/orion-osgi-console.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;To stop and shutdown orion simple type &lt;code&gt;close&lt;/code&gt; in the &lt;em&gt;Terminal&lt;/em&gt; window.&lt;/li&gt;
&lt;/ul&gt;&lt;h4&gt;Orion accessed from iPad doesn't work&lt;/h4&gt;I can open files and view them and move around with the outline bar at the left, but as yet I have failed to activate editing mode on a file. Clicking in the text or scrolling by dragging doesn't work. I suspect that the HTML used simply does not activate the keyboard on an iPad.&lt;br /&gt;
I think it is time to checkout the code...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-2586851374744770139?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nIV-TL2dwEJfj-Jq9r85zSTBIKc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nIV-TL2dwEJfj-Jq9r85zSTBIKc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nIV-TL2dwEJfj-Jq9r85zSTBIKc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nIV-TL2dwEJfj-Jq9r85zSTBIKc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/Z7b3cMEaqcU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/2586851374744770139/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2011/01/eclipse-orion-on-mac-osx-and-ipad.html#comment-form" title="1 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/2586851374744770139?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/2586851374744770139?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/Z7b3cMEaqcU/eclipse-orion-on-mac-osx-and-ipad.html" title="Eclipse Orion on Mac OSX and iPad" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_j0a2Zacz7c0/TS1w9yHxX_I/AAAAAAAAIck/E6gltVpjOAw/s72-c/eclipse-create-alias.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2011/01/eclipse-orion-on-mac-osx-and-ipad.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQCRX45eyp7ImA9Wx9XF0U.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-5687565946810667543</id><published>2011-01-11T22:12:00.000+01:00</published><updated>2011-01-11T22:12:44.023+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-11T22:12:44.023+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="orion" /><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="safari" /><category scheme="http://www.blogger.com/atom/ns#" term="web based ide" /><category scheme="http://www.blogger.com/atom/ns#" term="ipad" /><title>Eclipse Orion first impressions and setup for iPad</title><content type="html">As iPad doesn't support Java, there is no Eclipse on it, until now!&lt;br /&gt;
Because the iPad comes with Safari, a very good standards compliant webkit based browser, looking for a web based IDE does indeed make sense. So I'm very excited about the Orion announcement as can be found &lt;a href="http://dev.eclipse.org/blogs/mike/2011/01/11/introducing-orion/"&gt;here&lt;/a&gt;, &lt;a href="http://borisoneclipse.blogspot.com/2011/01/orion.html"&gt;here&lt;/a&gt; and &lt;a href="http://eclipsr.blogspot.com/2011/01/new-eclipse-webdev-blog.html"&gt;here.&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Installing and starting is easy&lt;/h4&gt;Download from &lt;a href="http://download.eclipse.org/e4/orion/"&gt;http://download.eclipse.org/e4/orion/&lt;/a&gt;. I choose the version for Mac OSX. It extracts into a folder named &lt;code&gt;eclipse&lt;/code&gt; that I renamed immediately to &lt;code&gt;eclipse-orion&lt;/code&gt; to avoid confusion with all the other versions installed on my machine.&lt;br /&gt;
&lt;h4&gt;Setting the server port to other than 8080&lt;/h4&gt;Port 8080 is already taken on my system I needed to edit the &lt;code&gt;config.ini&lt;/code&gt; file and change the &lt;code&gt;org.eclipse.equinox.http.jetty.http.port&lt;/code&gt; variable.&lt;br /&gt;
For Mac OSX select eclipse and right mouse click to to show package contents:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_j0a2Zacz7c0/TSzF58mr4BI/AAAAAAAAIcI/BAN58Dio6Po/s1600/eclipse-orion-port.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="291" width="320" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/TSzF58mr4BI/AAAAAAAAIcI/BAN58Dio6Po/s320/eclipse-orion-port.png" /&gt;&lt;/a&gt;&lt;/div&gt;Then locate &lt;code&gt;config.ini&lt;/code&gt; inside the &lt;code&gt;Contents/MacOS&lt;/code&gt; folder.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_j0a2Zacz7c0/TSzF6NpPD5I/AAAAAAAAIcQ/Yz3DYuiC-IU/s1600/eclipse-orion-contents.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="152" width="320" src="http://2.bp.blogspot.com/_j0a2Zacz7c0/TSzF6NpPD5I/AAAAAAAAIcQ/Yz3DYuiC-IU/s320/eclipse-orion-contents.png" /&gt;&lt;/a&gt;&lt;/div&gt;Then edit to choose the port that is free.&lt;br /&gt;
&lt;pre class="brush: plain;highlight: [10]"&gt;-startup
../../../plugins/org.eclipse.equinox.launcher_1.2.0.v20101119.jar
--launcher.library
../../../plugins/org.eclipse.equinox.launcher.cocoa.macosx_1.1.100.v20101004
-consoleLog
-console
-data
serverworkspace
-vmargs
-Dorg.eclipse.equinox.http.jetty.http.port=8888
-Dorg.eclipse.equinox.http.jetty.autostart=false
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
&lt;/pre&gt;&lt;br /&gt;
&lt;h4&gt;Fire up your iPad (simulator)&lt;/h4&gt;Open the iPad simulator, start Safari and go the URL &lt;code&gt;http://ip-address-of-dev-machine:8888/ &lt;/code&gt; and see the workspace.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_j0a2Zacz7c0/TSzF6Tp09GI/AAAAAAAAIcY/C6aH-mzszk0/s1600/orion-ipad.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="248" width="320" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/TSzF6Tp09GI/AAAAAAAAIcY/C6aH-mzszk0/s320/orion-ipad.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Now you can edit files of your mobile website and save and see them in action right on the couch.&lt;br /&gt;
&lt;br /&gt;
Next time: hooking up to an existing workspace.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-5687565946810667543?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/76NU4Vh0kemFVoA5tsDIpeu66Rc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/76NU4Vh0kemFVoA5tsDIpeu66Rc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/76NU4Vh0kemFVoA5tsDIpeu66Rc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/76NU4Vh0kemFVoA5tsDIpeu66Rc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/ioMacDAIee0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/5687565946810667543/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2011/01/eclipse-orion-first-impressions-and.html#comment-form" title="7 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/5687565946810667543?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/5687565946810667543?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/ioMacDAIee0/eclipse-orion-first-impressions-and.html" title="Eclipse Orion first impressions and setup for iPad" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_j0a2Zacz7c0/TSzF58mr4BI/AAAAAAAAIcI/BAN58Dio6Po/s72-c/eclipse-orion-port.png" height="72" width="72" /><thr:total>7</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2011/01/eclipse-orion-first-impressions-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IDQ307eCp7ImA9Wx9TFk4.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-6559037942605008396</id><published>2010-11-24T22:49:00.002+01:00</published><updated>2010-11-24T22:52:52.300+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-24T22:52:52.300+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NullController" /><category scheme="http://www.blogger.com/atom/ns#" term="MVC" /><category scheme="http://www.blogger.com/atom/ns#" term="John Gall" /><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="handling complexity" /><title>NullController pattern - how to evolve a complex RCP Eclipse client application</title><content type="html">&lt;h4&gt;Introduction&lt;/h4&gt;Many tutorials and quite a number of books describe how to get started in Eclipse plug-in development. It is only when trying to apply all of this new found knowledge to real world business applications that things get complicated.&lt;br /&gt;
&lt;h4&gt;Gradual increase of complexity&lt;/h4&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;The main problem during development of large systems is that all parts evolve in parallel: that database schema, the business logic on the servers, the EJB connection code and the RCP client. So it's time to think about what John Gall, much quoted author on System Theory, wrote:&lt;/div&gt;&lt;blockquote&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;“A complex system that works is invariably found to have evolved from a simple system that worked. The inverse proposition also appears to be true: A complex system designed from scratch never works and cannot be made to work. You have to start over, beginning with a working simple system.”&lt;/div&gt;&lt;/blockquote&gt;That is the inspiration for this blog post: you have to start simple and get it to work, then evolve from there. In this blog entry I will share how with a little forethought you can make you RCP client application easier to develop and test. With&amp;nbsp;&lt;i&gt;RCP client application&lt;/i&gt; I mean a front end for a large server based business application where multiple users access real time data using an Eclipse RCP based client. All business logic takes place on the server, the client provides a view to the current data and allows users to modify that data.&lt;br /&gt;
&lt;h4&gt;Basics: Split between UI and Core plug-ins&lt;/h4&gt;A good practice is to divide up your functionality in two plug-ins: one to handle most logic, called the Core plug-in, and another containing all code that requires a UI, called the UI plug-in. &lt;b&gt;Only&lt;/b&gt; the UI plugin has a dependency on the eclipse GUI framworks: &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;org.eclipse.swt&lt;/span&gt;, &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;org.eclipse.jface&lt;/span&gt;, &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;org.eclipse.ui&lt;/span&gt; and &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;org.eclipse.ui.workbench&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;.&lt;/span&gt; &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_j0a2Zacz7c0/TOpLPOuiCiI/AAAAAAAAIQg/j0LXu08qN8s/s1600/coreuiplugin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="167" src="http://3.bp.blogspot.com/_j0a2Zacz7c0/TOpLPOuiCiI/AAAAAAAAIQg/j0LXu08qN8s/s320/coreuiplugin.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;You can check this using the PDE dependency view.&lt;br /&gt;
&lt;h4&gt;NullController Pattern&lt;/h4&gt;The split between UI and Core is also called the Model View Controller or MVC pattern. Basically the UI &lt;i&gt;&lt;b&gt;subscribes&lt;/b&gt;&lt;/i&gt; to data updates and translates UI events that modify data into &lt;b&gt;&lt;i&gt;method calls&lt;/i&gt;&lt;/b&gt; to the controller. In Java terms: the controller in Core has &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;subscribe()&lt;/span&gt; and &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;unsubscribe()&lt;/span&gt; methods that take an application specific &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;listener&lt;/span&gt; interface as parameter.&lt;br /&gt;
The trick is to make the location of the controller indirect via a Factory, so it can evolve in complexity over time.&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/_j0a2Zacz7c0/TOo9mQURdjI/AAAAAAAAIQY/HH4qIe3mAHY/s1600/nullcontroller-pattern.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/TOo9mQURdjI/AAAAAAAAIQY/HH4qIe3mAHY/s400/nullcontroller-pattern.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;AbstractController&lt;/h4&gt;The &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;AbstractController&lt;/span&gt; includes the code to handle &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;subscribe()&lt;/span&gt; and &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;unsubscribe()&lt;/span&gt; of one or more views. It probably also contains the code to broadcast new or changed data to the views.&lt;br /&gt;
&lt;h4&gt;NullController&lt;/h4&gt;The &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;NullController&lt;/span&gt; implementation is the simplest possible form of the interface. All action method calls do nothing and all query methods return either null or, when collections, empty instances (so all iterators in views work).&lt;br /&gt;
With this controller you can work on the UI view and button layout and do simple developer testing for button and menu enablement.&lt;br /&gt;
&lt;h4&gt;StubController&lt;/h4&gt;The &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;StubController&lt;/span&gt; implementation is one step up in complexity. It is entirely resident in the client. All action method calls just provide expected feedback and all query methods return a simple local generated date object or collection. With this controller you can refine the UI interaction by allowing commands based on selection contents and implement selection service code. In this stage you can also demonstrate the UI to customers and users and start the development of training as the perceived behavior of the client will not change much.&lt;br /&gt;
&lt;h4&gt;LocalTestController&lt;/h4&gt;The &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;LocalTestController&lt;/span&gt; implementation links the UI data objects directly to local server code, but without the intermediate EJB layer. Here we can test whether the data in the data objects is filled consistently from the underlying databases.&lt;br /&gt;
&lt;h4&gt;J2EEController&lt;/h4&gt;When the above all works correctly it is time to insert the EJB layer. Create the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;J2EEController&lt;/span&gt; and deploy the EAR on a test server and then do the final testing using the RCP client.&lt;br /&gt;
&lt;h4&gt;Next time&lt;/h4&gt;I will fill out these basic steps with some code examples to show in more detail how to implement this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-6559037942605008396?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Giyq5EvXTGL31ZzNtC2TN8lKOK0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Giyq5EvXTGL31ZzNtC2TN8lKOK0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Giyq5EvXTGL31ZzNtC2TN8lKOK0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Giyq5EvXTGL31ZzNtC2TN8lKOK0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/0Fsqb2GjzE8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/6559037942605008396/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2010/11/nullcontroller-pattern-how-to-evolve.html#comment-form" title="0 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/6559037942605008396?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/6559037942605008396?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/0Fsqb2GjzE8/nullcontroller-pattern-how-to-evolve.html" title="NullController pattern - how to evolve a complex RCP Eclipse client application" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_j0a2Zacz7c0/TOpLPOuiCiI/AAAAAAAAIQg/j0LXu08qN8s/s72-c/coreuiplugin.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2010/11/nullcontroller-pattern-how-to-evolve.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUCQnk8eip7ImA9Wx9TFEk.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-8668769976884129985</id><published>2010-11-22T10:47:00.001+01:00</published><updated>2010-11-22T17:27:43.772+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-22T17:27:43.772+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="Demo camp" /><title>Eclipse Demo Camp Antwerp approaching!</title><content type="html">30 November Eclipse experts and enthusiasts from Belgium and The Netherlands will gather in Kontich near Antwerp to attend &lt;span style="font-style: italic;"&gt;Eclipse Demo Camp November 2010/Antwerp&lt;/span&gt;. &lt;br /&gt;
In prior years it was more of a Netherlands only event, but now it is a combined effort of Industrial TSI and SmartApp.&lt;br /&gt;
&lt;br /&gt;
The presenters currently scheduled are: &lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Ralph Mueller, Eclipse Foundation: "You know the past, can you guess the future of Eclipse?"&lt;/li&gt;
&lt;li&gt;Ralf Sternberg, EclipseSource: A talk from the Eclipse Summit 2010: "A look ahead at RAP: what's new now and will be noteworthy in the future"&lt;/li&gt;
&lt;li&gt;Oliver Wolf, Product Manager and Architect at SOPERA GmbH: "SOA at Eclipse"&lt;/li&gt;
&lt;li&gt;Wim Jongman, Industrial-TSI: Eclipse Mashup: How we use Eclipse Technology to stay ahead.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
Previous events were well attended, for a brief photo impression see here for &lt;a href="http://eclipsophy.blogspot.com/2010/06/eclipse-demo-camp-nieuwegein.html"&gt;2010&lt;/a&gt; and &lt;a href="http://eclipsophy.blogspot.com/2009/06/eclipse-demo-camp-nieuwegein.html"&gt;2009&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The number of already registered attendees is currently 17. So when you live or work in the Netherlands or Belgium and you have involvement with Eclipse in general, or Rich Web applications or Service Oriented Architecture in particular, please come and join us next week Tuesday. More information is available &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_November_2010/Antwerp"&gt;here&lt;/a&gt; and you can &lt;a href="http://hendrix.tcs.be/"&gt;register here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-8668769976884129985?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OzRE34KiCiA2e3xjcIoUpI6yBps/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OzRE34KiCiA2e3xjcIoUpI6yBps/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OzRE34KiCiA2e3xjcIoUpI6yBps/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OzRE34KiCiA2e3xjcIoUpI6yBps/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/3XuMJd2U4po" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/8668769976884129985/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2010/11/eclipse-demo-camp-antwerp-approaching.html#comment-form" title="0 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/8668769976884129985?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/8668769976884129985?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/3XuMJd2U4po/eclipse-demo-camp-antwerp-approaching.html" title="Eclipse Demo Camp Antwerp approaching!" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2010/11/eclipse-demo-camp-antwerp-approaching.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04BRX88fyp7ImA9Wx5TGEg.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-8096745094291195738</id><published>2010-08-03T18:03:00.006+02:00</published><updated>2010-08-03T18:12:34.177+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-03T18:12:34.177+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="equinox" /><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="youtube" /><title>Where do all Eclipse and Equinox names come from?</title><content type="html">&lt;h4&gt;What does a year on Earth really look like?&lt;/h4&gt;If you wan to know what the names Eclipse, Equinox and others really mean outside our little ecosphere, please have a look at this from Best of YouTube.&lt;br /&gt;&lt;object width="420" height="270"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9Ml4_Jv_HkE&amp;amp;hl=en_US&amp;amp;fs=1?rel=0&amp;amp;color1=0x2b405b&amp;amp;color2=0x6b8ab6&amp;amp;border=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/9Ml4_Jv_HkE&amp;amp;hl=en_US&amp;amp;fs=1?rel=0&amp;amp;color1=0x2b405b&amp;amp;color2=0x6b8ab6&amp;amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="420" height="270"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;It can also give you inspiration for naming your project if you don't want a &lt;a href="http://en.wikipedia.org/wiki/Three-letter_acronym"&gt;TLA&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-8096745094291195738?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8qR-UrTWebbKXe9xhyepivvk91A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8qR-UrTWebbKXe9xhyepivvk91A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8qR-UrTWebbKXe9xhyepivvk91A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8qR-UrTWebbKXe9xhyepivvk91A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/cuTbBc2rYdQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/8096745094291195738/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2010/08/where-do-all-eclipse-and-equinox-names.html#comment-form" title="0 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/8096745094291195738?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/8096745094291195738?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/cuTbBc2rYdQ/where-do-all-eclipse-and-equinox-names.html" title="Where do all Eclipse and Equinox names come from?" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2010/08/where-do-all-eclipse-and-equinox-names.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IAQHkyfSp7ImA9WxFUFEo.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-1523737974042476749</id><published>2010-06-25T17:00:00.005+02:00</published><updated>2010-06-25T17:25:41.795+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-25T17:25:41.795+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="typewriter" /><category scheme="http://www.blogger.com/atom/ns#" term="sopera" /><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="helios" /><category scheme="http://www.blogger.com/atom/ns#" term="Demo camp" /><title>Eclipse Demo Camp Nieuwegein</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_j0a2Zacz7c0/TCTF5Bab8GI/AAAAAAAAHS4/PxPWuOh-uDo/s1600/democamp-2010-01.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/_j0a2Zacz7c0/TCTF5Bab8GI/AAAAAAAAHS4/PxPWuOh-uDo/s320/democamp-2010-01.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5486727829466640482" /&gt;&lt;/a&gt;On June 23 there was an Eclipse Democamp at Industrial TSI in Nieuwegein to celebrate the launch of Helios.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_j0a2Zacz7c0/TCTF6WdWtHI/AAAAAAAAHTQ/UzRynoYPgpY/s1600/democamp-2010-04.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 213px; height: 320px;" src="http://2.bp.blogspot.com/_j0a2Zacz7c0/TCTF6WdWtHI/AAAAAAAAHTQ/UzRynoYPgpY/s320/democamp-2010-04.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5486727852295894130" /&gt;&lt;/a&gt;As usual Yuri Kok, owner of the &lt;a href="http://www.linkedin.com/groups?gid=1855650&amp;trk=myg_ugrp_ovr"&gt;Dutch Eclipse User Group &lt;/a&gt; on LinkedIn  managed to organize all the necessary ingredients like advanced networking facilities, an expectant audience of about 40 people and a number of speakers.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_j0a2Zacz7c0/TCTF5gjEj_I/AAAAAAAAHTA/w--83q3D-F8/s1600/democamp-2010-02.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/TCTF5gjEj_I/AAAAAAAAHTA/w--83q3D-F8/s320/democamp-2010-02.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5486727837824356338" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_j0a2Zacz7c0/TCTF6PWm1SI/AAAAAAAAHTI/2Rl3wGOn6BY/s1600/democamp-2010-03.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/TCTF6PWm1SI/AAAAAAAAHTI/2Rl3wGOn6BY/s320/democamp-2010-03.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5486727850388542754" /&gt;&lt;/a&gt;&lt;h4&gt;KEYNOTE: Wim Jongman, Helios &amp; OSGi Remote Services&lt;/h4&gt;Wim Jongman introduced the new Helios release, which includes 39 projects! After that he quickly went to a demonstration of Eclipse Remote Services, and the Zookeeper discovery mechanism implementation that Remain BV (co-host of the event) has contributed to the ECF. This was a very nice demonstration that included a new widget: the "osgiloscope".&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_j0a2Zacz7c0/TCTF6i7yzII/AAAAAAAAHTY/oGvuN86s1RM/s1600/democamp-2010-05.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://3.bp.blogspot.com/_j0a2Zacz7c0/TCTF6i7yzII/AAAAAAAAHTY/oGvuN86s1RM/s320/democamp-2010-05.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5486727855644789890" /&gt;&lt;/a&gt;&lt;h4&gt;Olivier Wolf, "SOA at Eclipse -- the Eclipse SOA Initiative"&lt;/h4&gt;Oliver Wolf of &lt;a href="http://www.sopera.de/en/home"&gt;SOPERA&lt;/a&gt; next introduced us the &lt;a href="http://www.eclipse.org/org/industry-workgroups/soawg.php"&gt;SOA Intiative&lt;/a&gt; at Eclipse,describing the role of community and industry working group, the split between modelling and runtime, what projects are part of the SOA Initiative and more. Revelaing was his slide that showed what areas still need to be filled in.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_j0a2Zacz7c0/TCTHJgXAfWI/AAAAAAAAHTk/1tY2sYDVPGw/s1600/democamp-2010-06.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/TCTHJgXAfWI/AAAAAAAAHTk/1tY2sYDVPGw/s320/democamp-2010-06.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5486729212163292514" /&gt;&lt;/a&gt;&lt;h4&gt;Drinks and slices&lt;/h4&gt;Always an important part of an evening gathering, this was organised splendidly: a choice of pizzas and drinks!&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_j0a2Zacz7c0/TCTHKHFHzfI/AAAAAAAAHTs/GNMgQbB4SCE/s1600/democamp-2010-07.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://2.bp.blogspot.com/_j0a2Zacz7c0/TCTHKHFHzfI/AAAAAAAAHTs/GNMgQbB4SCE/s320/democamp-2010-07.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5486729222557257202" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/TCTHKq_HwrI/AAAAAAAAHT8/tTSHnjawtbc/s1600/democamp-2010-08.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/TCTHKq_HwrI/AAAAAAAAHT8/tTSHnjawtbc/s320/democamp-2010-08.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5486729232195764914" /&gt;&lt;/a&gt;&lt;h4&gt;Ief Cuynen and Tom Bauwens, &lt;a href="http://www.smartapps.be/"&gt;SmartApps&lt;/a&gt; - Single-sourcing demo Eclipse RCP / RAP&lt;/h4&gt;RAP and RCP are both part of the Helios release and have reached maturity. Tom showed a real life application where the shared code base and the very rich display on both the web and RCP were amply demonstrated. He also offered tips on organising your code using plugins for the shared stuff and fragments for the RCP or RAP specific stuff.  &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_j0a2Zacz7c0/TCTHKS9bAoI/AAAAAAAAHT0/2PQjXox5w-U/s1600/democamp-2010-09.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://3.bp.blogspot.com/_j0a2Zacz7c0/TCTHKS9bAoI/AAAAAAAAHT0/2PQjXox5w-U/s320/democamp-2010-09.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5486729225746186882" /&gt;&lt;/a&gt;&lt;h4&gt;Jelle Herold, Stream BV - Statebox &amp; Typewriter&lt;/h4&gt;After telling us about &lt;dfn&gt;statebox&lt;/dfn&gt;, a process modelling and runtime engine, last time, this time Jelle described the &lt;dfn&gt;typewriter&lt;/dfn&gt; library.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_j0a2Zacz7c0/TCTHK65lI2I/AAAAAAAAHUE/cZVVgqJA5y8/s1600/democamp-2010-10.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://3.bp.blogspot.com/_j0a2Zacz7c0/TCTHK65lI2I/AAAAAAAAHUE/cZVVgqJA5y8/s320/democamp-2010-10.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5486729236467491682" /&gt;&lt;/a&gt;Because statebox needs to work with data and types from all sorts of systems, many of them non-java, using &lt;code&gt;java.lang.reflect&lt;/code&gt; was not an option.&lt;br /&gt;Jelle's solution is an &lt;em&gt;interface only&lt;/em&gt; reflection API, with implementations for Java (obviously), Swing, Wicket, Drupal, Solr and JFace.&lt;br/&gt;He invited us to look at and use his code &lt;a href="http://bitbucket.org/wires/typewriter"&gt;http://bitbucket.org/wires/typewriter&lt;/a&gt;.He can be contacted at jelle AT defekt DOT nl&lt;h4&gt;Olivier Wolf, "Eclipse Swordfish -- Service-oriented software development made easy"&lt;/h4&gt;Oliver had brought a second presentation about &lt;a href="http://www.eclipse.org/swordfish/"&gt;Swordfish&lt;/a&gt;, a SOA engine part of the Eclipse SOA Initiative. To show us some examples he demonstrated their use of the new Discovery UI API part of Helios, that is also used by Eclipse Marketplace and Mylyn Connector discovery. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_j0a2Zacz7c0/TCTIKHOE6BI/AAAAAAAAHUQ/Lhi7DP-rmAU/s1600/democamp-2010-11.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://3.bp.blogspot.com/_j0a2Zacz7c0/TCTIKHOE6BI/AAAAAAAAHUQ/Lhi7DP-rmAU/s320/democamp-2010-11.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5486730322106443794" /&gt;&lt;/a&gt;We see the already(!) familiar Discovery UI, followed by the Installation part. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_j0a2Zacz7c0/TCTIKUkVoPI/AAAAAAAAHUY/6E3N6dHD-P4/s1600/democamp-2010-12.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/TCTIKUkVoPI/AAAAAAAAHUY/6E3N6dHD-P4/s320/democamp-2010-12.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5486730325689475314" /&gt;&lt;/a&gt;Then he had the audience stunned by the popup of a compulsory registration dialog! See below:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_j0a2Zacz7c0/TCTIKRtdrQI/AAAAAAAAHUg/Ony9LsBVzfM/s1600/democamp-2010-13.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/TCTIKRtdrQI/AAAAAAAAHUg/Ony9LsBVzfM/s320/democamp-2010-13.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5486730324922445058" /&gt;&lt;/a&gt;He then went on to explain that this was all &lt;cite&gt;rather simple&lt;/cite&gt;, just using &lt;dfn&gt;p2 requirements&lt;/dfn&gt; to download the registration code from the server and &lt;dfn&gt;p2 touch points&lt;/dfn&gt; to invoke this code before proceeding!He promised to explain all in a blog post soon!&lt;h4&gt;Doru Gardan, ST-Ericsson - "Hardware debugging on a Digital Signal Processor"&lt;/h4&gt;To remind us that not everyone is on the latest and shiniest new release of Eclipse. He demonstrated their customised C-compiler and debugger stuff running in Ganymede. He compiled a demo program and ran it on the hardware with chip attached to his laptop.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_j0a2Zacz7c0/TCTIKyXwPbI/AAAAAAAAHUw/Jjn7bhE3SBo/s1600/democamp-2010-15.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/_j0a2Zacz7c0/TCTIKyXwPbI/AAAAAAAAHUw/Jjn7bhE3SBo/s320/democamp-2010-15.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5486730333689757106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_j0a2Zacz7c0/TCTIKliVuoI/AAAAAAAAHUo/8kZDgH9CGuo/s1600/democamp-2010-14.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 213px; height: 320px;" src="http://2.bp.blogspot.com/_j0a2Zacz7c0/TCTIKliVuoI/AAAAAAAAHUo/8kZDgH9CGuo/s320/democamp-2010-14.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5486730330244496002" /&gt;&lt;/a&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;Eclipse is doing well in the Netherlands, but we still need to go a long way for all users to interact and be aware of the community aspects. So all in all an informative evening that was very well hosted by Industrial TSI. Thank you, Yuri and all your colleagues!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-1523737974042476749?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Z-FjdAhiC6ddWMejrbt8GZhZGvc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Z-FjdAhiC6ddWMejrbt8GZhZGvc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Z-FjdAhiC6ddWMejrbt8GZhZGvc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Z-FjdAhiC6ddWMejrbt8GZhZGvc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/pFrGN10u-Q4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/1523737974042476749/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2010/06/eclipse-demo-camp-nieuwegein.html#comment-form" title="1 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/1523737974042476749?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/1523737974042476749?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/pFrGN10u-Q4/eclipse-demo-camp-nieuwegein.html" title="Eclipse Demo Camp Nieuwegein" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_j0a2Zacz7c0/TCTF5Bab8GI/AAAAAAAAHS4/PxPWuOh-uDo/s72-c/democamp-2010-01.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2010/06/eclipse-demo-camp-nieuwegein.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAGRn48eSp7ImA9WxFVEkk.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-1044368599371990876</id><published>2010-06-07T22:24:00.014+02:00</published><updated>2010-06-11T09:18:47.071+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-11T09:18:47.071+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="integration" /><category scheme="http://www.blogger.com/atom/ns#" term="build" /><category scheme="http://www.blogger.com/atom/ns#" term="plist" /><category scheme="http://www.blogger.com/atom/ns#" term="launchd" /><category scheme="http://www.blogger.com/atom/ns#" term="hudson" /><title>Getting started with Hudson &amp; Eclipse</title><content type="html">&lt;h4&gt;Why automated build?&lt;/h4&gt;After reading these two blog posts by Andrew Niefer &lt;a href="http://aniefer.blogspot.com/2009/07/composing-and-updating-custom-eclipse.html"&gt;here&lt;/a&gt; and &lt;a href="http://aniefer.blogspot.com/2009/07/adt-part-2-more-like-epp.html"&gt;here&lt;/a&gt;  I understand that there is simply no way to build a custom updatable RCP application manually from Eclipse. The export options are too limited so I opened &lt;a href="http://bugs.eclipse.org/?316059"&gt;bug 316059&lt;/a&gt; to make this exporting easier.&lt;br /&gt;&lt;h4&gt;Why Hudson?&lt;/h4&gt;As the Eclipse building infrastructure itself is employing &lt;a href="https://build.eclipse.org/hudson/"&gt;Hudson&lt;/a&gt; I expect that automating the build of RCP applications will be possible with Hudson. The first step is to download Hudson from &lt;a href="http://www.hudson-ci.org/"&gt;hudson-ci.org&lt;/a&gt;. I installed it on my Mac in &lt;code&gt;/usr/local/hudson/&lt;/code&gt;. &lt;h4&gt;LaunchAgent&lt;/h4&gt;I don't like starting up Terminal to manually start it everytime so I created a LaunchAgent for it. Place the following plist xml in file &lt;code&gt;/Library/LaunchAgents/org.hudson-ci.agent.plist&lt;/code&gt; and Hudson will start automagically every time on login.&lt;br /&gt;&lt;pre class="brush: xml;"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"&lt;br /&gt;    "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&amp;gt;&lt;br /&gt;&amp;lt;plist version="1.0"&amp;gt;&lt;br /&gt;&amp;lt;dict&amp;gt;&lt;br /&gt; &amp;lt;key&amp;gt;Label&amp;lt;/key&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;org.hudson-ci.agent&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;key&amp;gt;OnDemand&amp;lt;/key&amp;gt;&lt;br /&gt; &amp;lt;false/&amp;gt;&lt;br /&gt; &amp;lt;key&amp;gt;ProgramArguments&amp;lt;/key&amp;gt;&lt;br /&gt; &amp;lt;array&amp;gt;&lt;br /&gt;   &amp;lt;string&amp;gt;/usr/bin/java&amp;lt;/string&amp;gt;&lt;br /&gt;   &amp;lt;string&amp;gt;-jar&amp;lt;/string&amp;gt;&lt;br /&gt;   &amp;lt;string&amp;gt;/usr/local/hudson/hudson.war&amp;lt;/string&amp;gt;&lt;br /&gt;   &amp;lt;string&amp;gt;--httpPort=9090&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;/array&amp;gt;&lt;br /&gt; &amp;lt;key&amp;gt;StandardErrorPath&amp;lt;/key&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;/Library/Logs/hudson-err.log&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;key&amp;gt;StandardOutPath&amp;lt;/key&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;/Library/Logs/hudson-out.log&amp;lt;/string&amp;gt;&lt;br /&gt;&amp;lt;/dict&amp;gt;&lt;br /&gt;&amp;lt;/plist&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I employ one POJO jar in my RCP app and I managed to set this up in a few hours to extract from CVS, run checkstyle, findbugs, junit tests, emma tests code coverage and do final build. Next time I'll cover building a an Eclipse feature and update site.&lt;br /&gt;&lt;h4&gt;Moving HUDSON_HOME (Added on 2010 06 11)&lt;/h4&gt;After some time I noticed that my home directory was increasing in size, leading to rapid and longer TmeMachine backups. I like the backups of my development tools to be different and under my direct (script) control so I needed to move the Hudson home directory. Luckily this can be done easily!&lt;pre class="brush: xml;highlight:[6,7,8,9,10,11]"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"&lt;br /&gt;     "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&amp;gt;&lt;br /&gt;&amp;lt;plist version="1.0"&amp;gt;&lt;br /&gt;&amp;lt;dict&amp;gt;&lt;br /&gt;&amp;lt;!-- Moving HUDSON_HOME to /_some_other_volume_/Hudson/ --&amp;gt;&lt;br /&gt; &amp;lt;key&amp;gt;EnvironmentVariables&amp;lt;/key&amp;gt;&lt;br /&gt; &amp;lt;dict&amp;gt;&lt;br /&gt;  &amp;lt;key&amp;gt;HUDSON_HOME&amp;lt;/key&amp;gt;&lt;br /&gt;  &amp;lt;string&amp;gt;/_some_other_volume_/Hudson/&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;/dict&amp;gt;&lt;br /&gt; &amp;lt;key&amp;gt;Label&amp;lt;/key&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;org.hudson-ci.agent&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;key&amp;gt;OnDemand&amp;lt;/key&amp;gt;&lt;br /&gt; &amp;lt;false/&amp;gt;&lt;br /&gt; &amp;lt;key&amp;gt;ProgramArguments&amp;lt;/key&amp;gt;&lt;br /&gt; &amp;lt;array&amp;gt;&lt;br /&gt;   &amp;lt;string&amp;gt;/usr/bin/java&amp;lt;/string&amp;gt;&lt;br /&gt;   &amp;lt;string&amp;gt;-jar&amp;lt;/string&amp;gt;&lt;br /&gt;   &amp;lt;string&amp;gt;/usr/local/hudson/hudson.war&amp;lt;/string&amp;gt;&lt;br /&gt;   &amp;lt;string&amp;gt;--httpPort=9090&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;/array&amp;gt;&lt;br /&gt; &amp;lt;key&amp;gt;StandardErrorPath&amp;lt;/key&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;/Library/Logs/hudson-err.log&amp;lt;/string&amp;gt;&lt;br /&gt; &amp;lt;key&amp;gt;StandardOutPath&amp;lt;/key&amp;gt;&lt;br /&gt; &amp;lt;string&amp;gt;/Library/Logs/hudson-out.log&amp;lt;/string&amp;gt;&lt;br /&gt;&amp;lt;/dict&amp;gt;&lt;br /&gt;&amp;lt;/plist&amp;gt;&lt;/pre&gt;&lt;br /&gt;Now copy everything using terminal:&lt;pre class="style:shell;"&gt;&lt;br /&gt;&lt;b&gt;$ cp -pR .hudson/ /_some_other_volume_/Hudson/&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt; and restart Hudson.&lt;br /&gt;&lt;pre class="style:shell;"&gt;&lt;br /&gt;&lt;b&gt;$ ps -lA | grep hudson&lt;/b&gt;&lt;br /&gt;501   _XXXX_   565     4004   0  47  0  2972192 212840 - &amp;crarr;&lt;br /&gt;&amp;rarr;    S     a9a87e0 ??         0:40.14 &amp;crarr;&lt;br /&gt;&amp;rarr;    /usr/bin/java -jar /usr/local/hudson/hudson.war --httpPort=9090&lt;br /&gt;&lt;b&gt;$ kill _XXXX_&lt;br /&gt;$ sudo launchctl list&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Then try in your browser: And now everything appears to be located in the new location!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-1044368599371990876?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7YTj0KjllrS1W_LXuStYz9-KkCg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7YTj0KjllrS1W_LXuStYz9-KkCg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7YTj0KjllrS1W_LXuStYz9-KkCg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7YTj0KjllrS1W_LXuStYz9-KkCg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/IwetnuI55E8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/1044368599371990876/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2010/06/getting-started-with-hudson-eclipse.html#comment-form" title="0 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/1044368599371990876?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/1044368599371990876?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/IwetnuI55E8/getting-started-with-hudson-eclipse.html" title="Getting started with Hudson &amp; Eclipse" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2010/06/getting-started-with-hudson-eclipse.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUER3Y9eyp7ImA9WxFWEk8.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-6276197820246410448</id><published>2010-05-29T23:08:00.009+02:00</published><updated>2010-05-30T13:50:06.863+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-30T13:50:06.863+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="marketplace" /><category scheme="http://www.blogger.com/atom/ns#" term="industrial" /><category scheme="http://www.blogger.com/atom/ns#" term="eclipselabs.org" /><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="Mylyn" /><category scheme="http://www.blogger.com/atom/ns#" term="connector" /><title>Bug 184532 RESOLVED:  Industrial Connector moved to Eclipselabs</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://marketplace.eclipse.org/sites/default/files/industrial-110x80.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 110px; height: 80px;" src="http://marketplace.eclipse.org/sites/default/files/industrial-110x80.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;History&lt;/h4&gt;The Mylyn project has grown tremendously and taken on new directions since &lt;a href="https://bugs.eclipse.org/184532"&gt;bug 184532 [connector] Generic SQL connector&lt;/a&gt; was opened in 2007. Widescale adoption and praise for Mylyn and the foundation of Tasktop was followed by the release of many commercial connectors.&lt;br /&gt;As Mik has pointed out elsewhere, the Mylyn dev team simply does not have the resources to maintain the many contributions offered, one of which was this SQL connector. &lt;br /&gt;This is the only way for the Mylyn project to stay in innovation mode, stay out of maintenance mode! We understand and respect that decision as we too will benefit from that innovation.&lt;br /&gt;&lt;br /&gt;The Industrial SQL Connector for Mylyn does have an active though not very visible user community as it is the basis of the Mylyn connector of the commercial software change management product of &lt;a href="http://remainsoftware.com/solutions/software-change-management"&gt;Remain Software&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As can be seen from the entries in &lt;a href="https://bugs.eclipse.org/184532"&gt;bug 184532&lt;/a&gt; mentioned above also some people have used the Industrial SQL Connector to create connections to their in-house SQL based systems.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Move to Eclipselabs.org&lt;/h4&gt;For this reason we have decided to take the opportunity to join the newly formed &lt;a href="http://code.google.com/a/eclipselabs.org/hosting/"&gt;Eclipselabs.org&lt;/a&gt; with code hosting at Google code, and no longer actively pursue becoming part of mylyn core. There we will have our own dedicated Wiki, issue tracker, SVN repository and update site, so we no longer have to &lt;a href="http://en.wikipedia.org/wiki/Free_rider_problem"&gt;free ride&lt;/a&gt; on the eclipse.org infrastucture.&lt;br /&gt;As a consequence the projects and packages will be renamed to get rid of the &lt;code&gt;org.eclipse.mylyn.*&lt;/code&gt; prefix and revert back to &lt;code&gt;com.industrialtsi.mylyn.*&lt;/code&gt;, but will keep the &lt;a href="http://www.eclipse.org/legal/epl-v10.html"&gt;EPL&lt;/a&gt; as license.&lt;br /&gt;&lt;br /&gt;The new location for the project and source code is here:&lt;br /&gt;&lt;a href="http://code.google.com/a/eclipselabs.org/p/industrial-mylyn/"&gt;http://code.google.com/a/eclipselabs.org/p/industrial-mylyn/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We will be updating the Wiki and blog in the days to come.  We fixed some more bugs, upgraded the version to 0.9.6 and offer a preliminary update site here:&lt;br /&gt;&lt;a href="http://svn.codespot.com/a/eclipselabs.org/industrial-mylyn/trunk/com.industrialtsi.mylyn.site/"&gt;http://svn.codespot.com/a/eclipselabs.org/industrial-mylyn/trunk/com.industrialtsi.mylyn.site/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We are also present in the Eclipse Marketplace to be ready for Helios release here:&lt;br /&gt;&lt;a href="http://marketplace.eclipse.org/content/industrial-sql-connector-mylyn"&gt;http://marketplace.eclipse.org/content/industrial-sql-connector-mylyn&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;The above is an edited and  more elaborate version of the &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=184532#c69"&gt;closing comment&lt;/a&gt; on bug 184532.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-6276197820246410448?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1Z1oHUwd_zsYz-1OI5L7knKAuv8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1Z1oHUwd_zsYz-1OI5L7knKAuv8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1Z1oHUwd_zsYz-1OI5L7knKAuv8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1Z1oHUwd_zsYz-1OI5L7knKAuv8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/M7ixnPNlqa4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/6276197820246410448/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2010/05/bug-184532-resolved-industrial.html#comment-form" title="0 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/6276197820246410448?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/6276197820246410448?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/M7ixnPNlqa4/bug-184532-resolved-industrial.html" title="Bug 184532 RESOLVED:  Industrial Connector moved to Eclipselabs" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2010/05/bug-184532-resolved-industrial.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAAQXo5eCp7ImA9WxFQFkw.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-8687539194441320944</id><published>2010-05-11T23:58:00.007+02:00</published><updated>2010-05-12T00:25:40.420+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-12T00:25:40.420+02:00</app:edited><title>Preparing for Helios &amp; Eclipse Marketplace</title><content type="html">Have you also created plugin that you want to make easy to install? Then make sure your plugin is listed at Eclipse Marketplace and add the feature ids of the base install from you site.xml. 5 minutes work that make it a lot easier for your users!&lt;h4&gt;Upcoming Eclipse Helios release&lt;/h4&gt;I received a mail recently from the ever active Lynn Gayowski, the Marketing Events Manager for the Eclipse Foundation.&lt;br /&gt;The upcoming Helios release is one huge event and everybody in the eco system can be involved, either by testing the milestones or by preparing for one of the exiting UI improvements in Helios: the Eclipse Marketplace client.&lt;h4&gt;Eclipse Marketplace client&lt;/h4&gt;The &lt;a href="http://marketplace.eclipse.org/"&gt;Eclipse Marketplace&lt;/a&gt; is the website where you can find hundreds of plugins and RCP applications that will make your work easier: special purpose editors, task management, source code control, ...&lt;br /&gt;Until now you could lookup a plugin on the marketplace and then use the update site for that plugin to install it in your eclipse.&lt;br /&gt;A complicated process that involves webbrowser, search, copy, eclipse, add update site, paste, select, install, restart. This quickly adds up to several minutes. In Helios this is all replaced by a single menu selection &lt;b&gt;Help/Eclipse Solution Catalogs&lt;/b&gt;.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_j0a2Zacz7c0/S-nVlF2DSLI/AAAAAAAAHAg/99KSvagkZj0/s1600/marketplace.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 255px; height: 320px;" src="http://3.bp.blogspot.com/_j0a2Zacz7c0/S-nVlF2DSLI/AAAAAAAAHAg/99KSvagkZj0/s320/marketplace.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5470138055618939058" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;Only 5 minutes to set up!&lt;/h4&gt;Lynn requested that I provide information to make this client also show the &lt;b&gt;Industrial SQL Connector for Mylyn&lt;/b&gt; that I have blogged about here in the past. The steps to take are clearly described &lt;a href="http://marketplace.eclipse.org/quickstart"&gt;here&lt;/a&gt;. It is basically copying the feature id's from your site.xml to the data in the market place.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/S-nYiQAfpKI/AAAAAAAAHAo/sS4fMFHQHBY/s1600/marketplace-2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 162px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/S-nYiQAfpKI/AAAAAAAAHAo/sS4fMFHQHBY/s320/marketplace-2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5470141305342370978" /&gt;&lt;/a&gt;&lt;br /&gt;All in all it took me just 5 minutes to set up for two solutions I manage, including editing the descriptions in HTML to look nice in the information hover, and adding an image. Thanks for the tip Lynn!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-8687539194441320944?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/elygZS-FIaE1-6Wmc65mkvuiM2s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/elygZS-FIaE1-6Wmc65mkvuiM2s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/elygZS-FIaE1-6Wmc65mkvuiM2s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/elygZS-FIaE1-6Wmc65mkvuiM2s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/3zrVD0igkU8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/8687539194441320944/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2010/05/preparing-for-helios-eclipse.html#comment-form" title="1 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/8687539194441320944?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/8687539194441320944?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/3zrVD0igkU8/preparing-for-helios-eclipse.html" title="Preparing for Helios &amp; Eclipse Marketplace" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_j0a2Zacz7c0/S-nVlF2DSLI/AAAAAAAAHAg/99KSvagkZj0/s72-c/marketplace.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2010/05/preparing-for-helios-eclipse.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4NSXs9eSp7ImA9WxBQGE8.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-4784625823518409667</id><published>2010-01-18T15:46:00.005+01:00</published><updated>2010-01-18T16:03:18.561+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-18T16:03:18.561+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mac osx" /><category scheme="http://www.blogger.com/atom/ns#" term="function keys" /><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="system preferences" /><title>Eclipse Function keys in Snow Leopard</title><content type="html">I recently upgraded to Mac OSX Snow Leopard and was really sorry that I lost all the Eclipse function keys, as they are reassigned for the OS: Show Dashboard, brightness up/down, etc. Luckily I soon discovered this option in System Preferences for Keyboard:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_j0a2Zacz7c0/S1R37v8mSSI/AAAAAAAAGn0/Gm-BFIuPDUE/s1600-h/blog-fnkeys.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 290px;" src="http://3.bp.blogspot.com/_j0a2Zacz7c0/S1R37v8mSSI/AAAAAAAAGn0/Gm-BFIuPDUE/s320/blog-fnkeys.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5428095319254911266" /&gt;&lt;/a&gt;&lt;br /&gt;Luckily it also work the other way around, so you can keep &lt;b&gt;f4&lt;/b&gt; to mean &lt;em&gt;Dashboard&lt;/em&gt;, but use &lt;b&gt;fn+f4&lt;/b&gt; to do &lt;em&gt;Show Hierarchy&lt;/em&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-4784625823518409667?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lQSSUs4x_ELwqml6lTOF0Hc7qec/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lQSSUs4x_ELwqml6lTOF0Hc7qec/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lQSSUs4x_ELwqml6lTOF0Hc7qec/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lQSSUs4x_ELwqml6lTOF0Hc7qec/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/tqP136coGXo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/4784625823518409667/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2010/01/eclipse-function-keys-in-snow-leopard.html#comment-form" title="1 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/4784625823518409667?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/4784625823518409667?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/tqP136coGXo/eclipse-function-keys-in-snow-leopard.html" title="Eclipse Function keys in Snow Leopard" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_j0a2Zacz7c0/S1R37v8mSSI/AAAAAAAAGn0/Gm-BFIuPDUE/s72-c/blog-fnkeys.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2010/01/eclipse-function-keys-in-snow-leopard.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4ASXY-eSp7ImA9WxBSEEg.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-288296161749789144</id><published>2009-12-17T12:50:00.011+01:00</published><updated>2009-12-17T13:45:48.851+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-17T13:45:48.851+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="linked resources" /><title>Proper handling of linked resources</title><content type="html">In the Eclipse workbench you can import resources, meaning copying them into the workspace, or you can set up a folder to link to them, and they files stay where they were. For large datasets, linking has obvious advantages. There is even a Decorator to show linked resources.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/SyoftCnzHDI/AAAAAAAAGew/Q_E8d7rajyA/s1600-h/linked-resource-blog-1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 201px; height: 76px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/SyoftCnzHDI/AAAAAAAAGew/Q_E8d7rajyA/s400/linked-resource-blog-1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5416176360524815410" /&gt;&lt;/a&gt;&lt;br /&gt;When programming in Eclipse you sometimes must use plain Java based libraries. These libraries handle files using &lt;code&gt;java.io.File&lt;/code&gt;. When you work in Eclipse you reference files in the workspace using &lt;code&gt;org.eclipse.core.resources.IFile&lt;/code&gt;. So in this case I needed to convert between the two formats.&lt;br /&gt;&lt;h4&gt;First attempt, WRONG!&lt;/h4&gt;My first attempt was to use &lt;code&gt;f.getFullPath().toFile()&lt;/code&gt; and that worked! Because I tested all my code with small data sets in the workspace, it wasn't until later that I found out, this does not work with linked resources:&lt;br /&gt;&lt;pre class="brush: text;"&gt;java.io.FileNotFoundException: /Remote-Data/eulumdat/data.file (No such file or directory)&lt;br /&gt;at java.io.FileInputStream.open(Native Method)&lt;br /&gt;at java.io.FileInputStream.&lt;init&gt;(FileInputStream.java:106)&lt;br /&gt;at java.io.FileReader.&lt;init&gt;(FileReader.java:55)&lt;br /&gt;at xxxx&lt;/pre&gt;&lt;h4&gt;Second attempt: the proper way&lt;/h4&gt;My went back to the offending code and used CTRL+SPACE again. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_j0a2Zacz7c0/Syon3_sFKnI/AAAAAAAAGe8/3GLWIKoWX5w/s1600-h/linked-resource-blog-2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 135px;" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/Syon3_sFKnI/AAAAAAAAGe8/3GLWIKoWX5w/s400/linked-resource-blog-2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5416185344809052786" /&gt;&lt;/a&gt;Now I selected &lt;code&gt;f.getLocation().toFile()&lt;/code&gt; and that did it!&lt;br /&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;In order to get your code working in all circumstances, you need to test with both resources in the workspace and outside.&lt;br /&gt;I'm i good company though, as there are &lt;a href="https://bugs.eclipse.org/bugs/buglist.cgi?quicksearch=linked+resources"&gt;64 open bugs&lt;/a&gt; in the Eclipse bugzilla about linked resources.&lt;br /&gt;Also I suspect code that doesn't work with linked resources, will not work with the remote system explorer, like &lt;a href="https://bugs.eclipse.org/293108"&gt;this one&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-288296161749789144?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bIjaznWlmyXhf3Y3_5LnAuSRq9s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bIjaznWlmyXhf3Y3_5LnAuSRq9s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bIjaznWlmyXhf3Y3_5LnAuSRq9s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bIjaznWlmyXhf3Y3_5LnAuSRq9s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/sKbVG95IE8M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/288296161749789144/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2009/12/proper-handling-of-linked-resources.html#comment-form" title="3 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/288296161749789144?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/288296161749789144?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/sKbVG95IE8M/proper-handling-of-linked-resources.html" title="Proper handling of linked resources" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_j0a2Zacz7c0/SyoftCnzHDI/AAAAAAAAGew/Q_E8d7rajyA/s72-c/linked-resource-blog-1.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2009/12/proper-handling-of-linked-resources.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8ARXo4fip7ImA9WxBSEUo.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-7845073161998213348</id><published>2009-12-10T12:55:00.012+01:00</published><updated>2009-12-19T00:27:24.436+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-19T00:27:24.436+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="pmf" /><category scheme="http://www.blogger.com/atom/ns#" term="e4" /><category scheme="http://www.blogger.com/atom/ns#" term="lombok" /><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="osgi" /><category scheme="http://www.blogger.com/atom/ns#" term="Demo camp" /><title>Dutch Eclipse Democamp 2009 at TSI International Nieuwegein</title><content type="html">Yesterday TSI International hosted the Eclipse Democamp for about 40 people in Nieuwegein.&lt;br /&gt;&lt;h4&gt;Photographic impression&lt;/h4&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/SyDilYEgkXI/AAAAAAAAGeY/39-i0b8wvDU/s1600-h/democamp-2009-01.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/SyDilYEgkXI/AAAAAAAAGeY/39-i0b8wvDU/s320/democamp-2009-01.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5413575883843735922" /&gt;&lt;/a&gt;Wim Jongman preparing for the kick off on Eclipse 4.0&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/SyDilGoBzwI/AAAAAAAAGeQ/NX8USTjkjvM/s1600-h/democamp-2009-02.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/SyDilGoBzwI/AAAAAAAAGeQ/NX8USTjkjvM/s320/democamp-2009-02.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5413575879160876802" /&gt;&lt;/a&gt;Advanced networking facilities&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/SyDikxZWMtI/AAAAAAAAGeI/0oRxjsWrJfI/s1600-h/democamp-2009-03.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/SyDikxZWMtI/AAAAAAAAGeI/0oRxjsWrJfI/s320/democamp-2009-03.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5413575873462153938" /&gt;&lt;/a&gt;All the chairs in the building set up&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/SyDid-zeRrI/AAAAAAAAGeA/QiRqc0yLVBE/s1600-h/democamp-2009-04.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/SyDid-zeRrI/AAAAAAAAGeA/QiRqc0yLVBE/s320/democamp-2009-04.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5413575756802311858" /&gt;&lt;/a&gt;Making clear who paid for food and drink&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_j0a2Zacz7c0/SyDid6o0eSI/AAAAAAAAGd4/BCUUE1XCJn0/s1600-h/democamp-2009-05.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/_j0a2Zacz7c0/SyDid6o0eSI/AAAAAAAAGd4/BCUUE1XCJn0/s320/democamp-2009-05.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5413575755683887394" /&gt;&lt;/a&gt; and quite crowd came to listen and watch&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_j0a2Zacz7c0/SyDidf6iL0I/AAAAAAAAGdw/P4TSA4g-irg/s1600-h/democamp-2009-06.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/_j0a2Zacz7c0/SyDidf6iL0I/AAAAAAAAGdw/P4TSA4g-irg/s320/democamp-2009-06.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5413575748510428994" /&gt;&lt;/a&gt;Jeroen van Grondelle and Marcel Offermans about OSGI service patterns. (Only implemented in full in &lt;a href="http://felix.apache.org/site/index.html"&gt;Apache Felix&lt;/a&gt;), Jeroen stressed that we have to rethink our application for OSGi to fully take advantage of its facilities and not continue in our old Eclipse habits. Think service, not listener. &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_j0a2Zacz7c0/SyDidIzm7sI/AAAAAAAAGdo/tL3e-_ES6-8/s1600-h/democamp-2009-07.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/SyDidIzm7sI/AAAAAAAAGdo/tL3e-_ES6-8/s320/democamp-2009-07.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5413575742307364546" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_j0a2Zacz7c0/SyDiQphsqLI/AAAAAAAAGdY/lHKaRxnnOlE/s1600-h/democamp-2009-08.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/SyDiQphsqLI/AAAAAAAAGdY/lHKaRxnnOlE/s320/democamp-2009-08.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5413575527752313010" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_j0a2Zacz7c0/SyDiQHs7GuI/AAAAAAAAGdQ/Ct4xx7t4ZiM/s1600-h/democamp-2009-09.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/_j0a2Zacz7c0/SyDiQHs7GuI/AAAAAAAAGdQ/Ct4xx7t4ZiM/s320/democamp-2009-09.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5413575518672591586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_j0a2Zacz7c0/SyDiP3hjw3I/AAAAAAAAGdI/EL9hUSnHfLM/s1600-h/democamp-2009-10.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/SyDiP3hjw3I/AAAAAAAAGdI/EL9hUSnHfLM/s320/democamp-2009-10.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5413575514329957234" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/SyDiPcrgUYI/AAAAAAAAGdA/kCH_DXfrPI4/s1600-h/democamp-2009-11.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/SyDiPcrgUYI/AAAAAAAAGdA/kCH_DXfrPI4/s320/democamp-2009-11.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5413575507123917186" /&gt;&lt;/a&gt;Jim van Dijk on &lt;a href="http://www.eclipse.org/pmf/"&gt;Presentation Modelling Framework&lt;/a&gt;. We have to learn to think about UI in a whole different way again, not in terms of implementation (widgets, controls, HTML, ...) but in their abstractions: conversations, dialogs, compound dialogs, etc.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_j0a2Zacz7c0/SyDiPYvb7YI/AAAAAAAAGc4/hXKSMDb2CjA/s1600-h/democamp-2009-12.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://3.bp.blogspot.com/_j0a2Zacz7c0/SyDiPYvb7YI/AAAAAAAAGc4/hXKSMDb2CjA/s320/democamp-2009-12.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5413575506066664834" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_j0a2Zacz7c0/SyDiB0gTJZI/AAAAAAAAGcw/AQvCz4-awns/s1600-h/democamp-2009-13.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/SyDiB0gTJZI/AAAAAAAAGcw/AQvCz4-awns/s320/democamp-2009-13.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5413575273001198994" /&gt;&lt;/a&gt;Break for food and drink, THANK YOU Wim Jongman!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_j0a2Zacz7c0/SyDiBhayLvI/AAAAAAAAGco/-Bp_GWiko5U/s1600-h/democamp-2009-14.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://3.bp.blogspot.com/_j0a2Zacz7c0/SyDiBhayLvI/AAAAAAAAGco/-Bp_GWiko5U/s320/democamp-2009-14.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5413575267877793522" /&gt;&lt;/a&gt;That went down just as well as the presentations&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_j0a2Zacz7c0/SyDiBFfOdEI/AAAAAAAAGcg/_X616TGG11o/s1600-h/democamp-2009-15.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/SyDiBFfOdEI/AAAAAAAAGcg/_X616TGG11o/s320/democamp-2009-15.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5413575260380230722" /&gt;&lt;/a&gt;Roel Spilker and Reinier Zwitserloot talked about &lt;a href="http://projectlombok.org/"&gt;Project Lombok&lt;/a&gt; and showed the Lombox Eclipse plugin to the world for the first time! &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/SyDiA4IuL1I/AAAAAAAAGcY/qSLgCJheISE/s1600-h/democamp-2009-16.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/SyDiA4IuL1I/AAAAAAAAGcY/qSLgCJheISE/s320/democamp-2009-16.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5413575256796180306" /&gt;&lt;/a&gt;Wim Jongman and Marcel Offermans talked about and demonstrated OSGi in the cloud using Eclipse and &lt;a href="http://incubator.apache.org/ace/"&gt;Apache ACE&lt;/a&gt;. &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_j0a2Zacz7c0/SyDiAiOSVnI/AAAAAAAAGcQ/UppWadAWACE/s1600-h/democamp-2009-17.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://3.bp.blogspot.com/_j0a2Zacz7c0/SyDiAiOSVnI/AAAAAAAAGcQ/UppWadAWACE/s320/democamp-2009-17.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5413575250913941106" /&gt;&lt;/a&gt;Finally we heard and saw Jelle Herold about  Verostko graphics toolkit &amp; Statebox process engine.&lt;br /&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;A well hosted gathering with excellent presentations for a growing number of Eclipse enthusiasts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-7845073161998213348?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gI4Z247lCLIkLEbSS_pOe3WgvF4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gI4Z247lCLIkLEbSS_pOe3WgvF4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gI4Z247lCLIkLEbSS_pOe3WgvF4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gI4Z247lCLIkLEbSS_pOe3WgvF4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/VCIyaCy91JY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/7845073161998213348/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2009/12/dutch-eclipse-democap-2009-at-tsi.html#comment-form" title="2 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/7845073161998213348?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/7845073161998213348?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/VCIyaCy91JY/dutch-eclipse-democap-2009-at-tsi.html" title="Dutch Eclipse Democamp 2009 at TSI International Nieuwegein" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_j0a2Zacz7c0/SyDilYEgkXI/AAAAAAAAGeY/39-i0b8wvDU/s72-c/democamp-2009-01.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2009/12/dutch-eclipse-democap-2009-at-tsi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUDRH06fCp7ImA9WxBTFEk.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-2567253596810966626</id><published>2009-12-10T11:25:00.009+01:00</published><updated>2009-12-10T12:24:35.314+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-10T12:24:35.314+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="branding" /><category scheme="http://www.blogger.com/atom/ns#" term="startup" /><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="icon" /><category scheme="http://www.blogger.com/atom/ns#" term="Jobs" /><title>Decorating your Jobs</title><content type="html">Reinforcing your brand with every UI contact of your plugin is important in this competitive world. Many plugins launch Jobs when when Eclipse is starting up, to refresh their data, check the license, or whatever. Some Jobs display an icon to reveal the identity and reinforce the brand. Below is an example, showing two jobs that use text only and one with an icon.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/SyDMpW4Y19I/AAAAAAAAGb4/l6TS3Oo9dzQ/s1600-h/decoratedjob.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 202px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/SyDMpW4Y19I/AAAAAAAAGb4/l6TS3Oo9dzQ/s320/decoratedjob.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5413551762988128210" /&gt;&lt;/a&gt;So how is this achieved?&lt;h4&gt;step 1: register with Workbench ProgressService&lt;/h4&gt;An Eclipse &lt;code&gt;Job&lt;/code&gt; can belong to a family, where a family can be any java &lt;code&gt;Object&lt;/code&gt;. The &lt;code&gt;ProgressService&lt;/code&gt; maintains a table of icons associated with each family. So step one is to register your icon and family in your Activator's &lt;code&gt;start()&lt;/code&gt; method.&lt;br /&gt;&lt;pre class="brush: java;highlight: [4,5,6,7]"&gt;@Override&lt;br /&gt;public void start(final BundleContext context) throws Exception {&lt;br /&gt; super.start(context);&lt;br /&gt; getWorkbench().getProgressService().&lt;br /&gt;   registerIconForFamily(&lt;br /&gt;      getImageDescriptor(ICONPATH), &lt;br /&gt;      MyTools.PLUGIN_ID);&lt;br /&gt;[...]&lt;br /&gt; Rebuilder rebuilder = new Rebuilder("Initializing My Tools");&lt;br /&gt; rebuilder.schedule(20L);&lt;br /&gt;}&lt;/pre&gt;&lt;h4&gt;step 2: override &lt;code&gt;belongsTo()&lt;/code&gt; in your Job subclass&lt;/h4&gt;Next you override the method &lt;code&gt;belongsTo()&lt;/code&gt; in your subclass with some simpel logic, calling &lt;code&gt;super.belongsTo()&lt;/code&gt;when not equal top allow for Job class hierarchies.&lt;pre class="brush: java;highlight: [5,6,7]"&gt;public class Rebuilder extends Job {&lt;br /&gt;[...]&lt;br /&gt;@Override&lt;br /&gt;public boolean belongsTo(final Object family) {&lt;br /&gt; if (family.equals(MyTools.PLUGIN_ID)) {&lt;br /&gt;  return true;&lt;br /&gt; }&lt;br /&gt; return super.belongsTo(family);&lt;br /&gt;}&lt;br /&gt;[...]&lt;br /&gt;}&lt;/pre&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;As always in Eclipse programming this solution took a long time to find, but can be implemented in a few lines of code once you know how.&lt;h4&gt;Caveat&lt;/h4&gt;What remains is that you can only do this for Jobs that you launch yourself, and not for other background tasks like the Auto Build jobs that call your Builders.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_j0a2Zacz7c0/SyDUDsRUg6I/AAAAAAAAGcE/0FF_NKy4tLY/s1600-h/autobuildjob.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 123px;" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/SyDUDsRUg6I/AAAAAAAAGcE/0FF_NKy4tLY/s320/autobuildjob.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5413559911987839906" /&gt;&lt;/a&gt;They all share the same icon :-(&lt;br /&gt;I have created a bug for this, please support and vote &lt;a href="http://bugs.eclipse.org/297465"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-2567253596810966626?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_q2miGSxJNlJN5aoYlBJ4-FpeQs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_q2miGSxJNlJN5aoYlBJ4-FpeQs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_q2miGSxJNlJN5aoYlBJ4-FpeQs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_q2miGSxJNlJN5aoYlBJ4-FpeQs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/upw0HySBLTE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/2567253596810966626/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2009/12/decorating-your-jobs.html#comment-form" title="3 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/2567253596810966626?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/2567253596810966626?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/upw0HySBLTE/decorating-your-jobs.html" title="Decorating your Jobs" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_j0a2Zacz7c0/SyDMpW4Y19I/AAAAAAAAGb4/l6TS3Oo9dzQ/s72-c/decoratedjob.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2009/12/decorating-your-jobs.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QBRXk-fyp7ImA9WxNaGU4.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-6819824775832535154</id><published>2009-12-04T14:52:00.017+01:00</published><updated>2009-12-04T16:09:14.757+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-04T16:09:14.757+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WorkbenchMarkerResolution" /><category scheme="http://www.blogger.com/atom/ns#" term="Quick Fix" /><category scheme="http://www.blogger.com/atom/ns#" term="IMarkerResolution2" /><category scheme="http://www.blogger.com/atom/ns#" term="eulumdat" /><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><title>WorkbenchMarkerResolution is fantastic!</title><content type="html">One of my ongoing projects that is in beta now for a long time is &lt;a href="http://www.fold1.com/eulumdattools/"&gt;EulumdatTools&lt;/a&gt;, a special purpose editor and workbench for managing, verifying and editing EULUMDAT files. &lt;a href="http://www.helios32.com/Eulumdat.htm"&gt;EULUMDAT&lt;/a&gt; is a European de facto standard for photometric data files. It describes stuff like manufacturer, product name, lamp type, power consumption and luminous flux distribution for lighting products.&lt;h4&gt;Builder, IMarker and IMarkerResolution2&lt;/h4&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_j0a2Zacz7c0/SxkXmhKXMTI/AAAAAAAAGT0/60t7K4hnI2o/s1600-h/quickfix-blog-1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 242px;" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/SxkXmhKXMTI/AAAAAAAAGT0/60t7K4hnI2o/s320/quickfix-blog-1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5411382377766662450" /&gt;&lt;/a&gt;&lt;br /&gt;I used Eclipse to create a Builder, IMarkers and IMarkerResolution2 to create a Validator, Problems view entries and Quick Fix solutions under CTRL/CMD+1 to resolve issues where file were not conforming to standard or incomplete (for the curious: some manufacturers do not provide the Direct Flux Factors). &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_j0a2Zacz7c0/SxkXm7xOPXI/AAAAAAAAGT8/POeAgbs8VJM/s1600-h/quickfix-blog-2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 314px; height: 320px;" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/SxkXm7xOPXI/AAAAAAAAGT8/POeAgbs8VJM/s320/quickfix-blog-2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5411382384908975474" /&gt;&lt;/a&gt;There are 10 of these Direct Flux Factors in every file, so it would be nice to be able to fix these all in one action.&lt;h4&gt;WorkbenchMarkerResolution to the rescue!&lt;/h4&gt;After some research I found that that is easier to implement than I first thought! What you must do is make your Quick Fix code &lt;code&gt;extend WorkbenchMarkerReslution&lt;/code&gt; instead of &lt;code&gt;implement IMarkerResolution2&lt;/code&gt;.&lt;br /&gt;This means you must implement one extra method: &lt;code&gt;IMarker[] findOtherMarkers(IMarker[] markers)&lt;/code&gt;. You receive ALL of the markers in the problems view and must return an array of those you can handle in this Quick Fix, this is easy to implement with a loop and a &lt;code&gt;isValidOther()&lt;/code&gt; method.&lt;pre class="brush: java"&gt;public class ReplaceDFF extends WorkbenchMarkerResolution {&lt;br /&gt;&lt;br /&gt;private final IMarker originalMarker;&lt;br /&gt;&lt;br /&gt;// use constructor to remember original marker&lt;br /&gt;public ReplaceDFF(final IMarker marker) {&lt;br /&gt; super();&lt;br /&gt; originalMarker = marker;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public IMarker[] findOtherMarkers(IMarker[] markers) {&lt;br /&gt; List&amp;lt;IMarker&amp;gt; others = new ArrayList&amp;lt;IMarker&amp;gt;();&lt;br /&gt; for (IMarker marker : markers) {&lt;br /&gt;  if (isValidOther(marker)) {&lt;br /&gt;   others.add(marker);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; return others.toArray(new IMarker[0]);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public boolean isValidOther(final IMarker marker) {&lt;br /&gt;// is it the originalMarker, we don't want duplicates!&lt;br /&gt;if(markerToCheck.equals(originalMarker)) {&lt;br /&gt; return false;&lt;br /&gt;}&lt;br /&gt; // is it in the same file as original marker?&lt;br /&gt; if(!marker.getResource().equals(originalMarker.getResource())) {&lt;br /&gt;  return false;&lt;br /&gt; }&lt;br /&gt; // is it the same validator?&lt;br /&gt; String checkerName = LightOutputRatioChecker.class.getName();&lt;br /&gt; if(!checkerName.equals(getCheckerName(marker))) {&lt;br /&gt;  return false;&lt;br /&gt; }&lt;br /&gt; // is it the same error found?&lt;br /&gt; String checkerMessage = getCheckerMessage(marker);&lt;br /&gt; if(!checkerMessage.startsWith(&lt;br /&gt;  LightOutputRatioChecker.DIRECT_RATIO_1))&lt;br /&gt; {&lt;br /&gt;  return false;&lt;br /&gt; }&lt;br /&gt; return true;&lt;br /&gt;}&lt;br /&gt;[...]&lt;br /&gt;}&lt;/pre&gt;&lt;h4&gt;The result is improved usability&lt;/h4&gt;Running with this small modification gives us this Quick Fix Dialog:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_j0a2Zacz7c0/SxkdiPbrfkI/AAAAAAAAGUE/AFFRbHCTjC8/s1600-h/quickfix-blog-3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 314px; height: 320px;" src="http://3.bp.blogspot.com/_j0a2Zacz7c0/SxkdiPbrfkI/AAAAAAAAGUE/AFFRbHCTjC8/s320/quickfix-blog-3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5411388901357747778" /&gt;&lt;/a&gt;In practice the values are all correct or more than one is wrong, so handling this in one Quick fix will improve the users productivity in a big way. Click once, save the file and all warnings are gone...&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/SxkhAG9sqSI/AAAAAAAAGUM/-NJ97Rk5TYg/s1600-h/quickfix-blog-4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 242px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/SxkhAG9sqSI/AAAAAAAAGUM/-NJ97Rk5TYg/s320/quickfix-blog-4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5411392713015470370" /&gt;&lt;/a&gt;&lt;h4&gt;Final notes...&lt;/h4&gt;I experimented with various filtering strategies before settling on fixing all similar errors in one file. Using the filters you can also opt to:&lt;ul&gt;&lt;li&gt;Fix different errors all in the same file, when your run(IMarker) method can handle different errors.&lt;/li&gt;&lt;li&gt;Find all errors in the workspace, letting through all markers with this fix. But then each fix required the file to be opened, so that takes  long time and this cannot be cancelled.&lt;/li&gt;&lt;li&gt;I may still try to check whether the file is already open and only suggest to apply the fix in these.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-6819824775832535154?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/A23RKD5V07qDxXlyloUXH9yC3qo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A23RKD5V07qDxXlyloUXH9yC3qo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/A23RKD5V07qDxXlyloUXH9yC3qo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A23RKD5V07qDxXlyloUXH9yC3qo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/xKiFvl-fzZ0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/6819824775832535154/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2009/12/workbenchmarkerresolution-is-fantastic.html#comment-form" title="0 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/6819824775832535154?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/6819824775832535154?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/xKiFvl-fzZ0/workbenchmarkerresolution-is-fantastic.html" title="WorkbenchMarkerResolution is fantastic!" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_j0a2Zacz7c0/SxkXmhKXMTI/AAAAAAAAGT0/60t7K4hnI2o/s72-c/quickfix-blog-1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2009/12/workbenchmarkerresolution-is-fantastic.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAGR38yeCp7ImA9WxNaGU4.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-3049716572723675902</id><published>2009-11-19T22:07:00.003+01:00</published><updated>2009-12-04T14:52:06.190+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-04T14:52:06.190+01:00</app:edited><title>Eclipse Demo Camp in Netherlands</title><content type="html">We have to wait for a few more days for &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Nieuwegein"&gt;Eclipse Democamp in Netherlands&lt;/a&gt;.&lt;br /&gt;Five presentations and thirty attendees already...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-3049716572723675902?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MPLS14ttOhx4NJ-Dh9vEIEX9RSo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MPLS14ttOhx4NJ-Dh9vEIEX9RSo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MPLS14ttOhx4NJ-Dh9vEIEX9RSo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MPLS14ttOhx4NJ-Dh9vEIEX9RSo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/B3v1lWWGweU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/3049716572723675902/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2009/11/eclipse-demo-camp-in-netherlands.html#comment-form" title="0 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/3049716572723675902?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/3049716572723675902?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/B3v1lWWGweU/eclipse-demo-camp-in-netherlands.html" title="Eclipse Demo Camp in Netherlands" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2009/11/eclipse-demo-camp-in-netherlands.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAFSXg5fyp7ImA9Wx9bE0o.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-1500900968790844200</id><published>2009-10-25T22:34:00.018+01:00</published><updated>2011-02-22T11:31:58.627+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-22T11:31:58.627+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sql" /><category scheme="http://www.blogger.com/atom/ns#" term="industrial" /><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="Mylyn" /><category scheme="http://www.blogger.com/atom/ns#" term="twitter" /><category scheme="http://www.blogger.com/atom/ns#" term="connector" /><category scheme="http://www.blogger.com/atom/ns#" term="twitter4j" /><title>DIY Mylyn Twitter connector</title><content type="html">Connecting Mylyn to SQL databases is easy using the Industrial SQL Connector for Mylyn, but you can also connect to something else by implementing or extending the IPersistor interface.&lt;br /&gt;
In this blog I describe how to quickly create a basic connector that will allow you follow one or more Twitter feeds right in the Mylyn Task List. Twitter is used to send out notifications by an ever increasing range of hardware or processes:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Wim Jongman tweeted about connecting an AS/400 or iSeries to Twitter to notify on jobs&lt;a href="http://twitter.com/wimjongman/status/3757352538"&gt;&amp;gt;&amp;gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Kim Moir added twitter as a way of build notifications for the Equinox team using Hudson twitter plugin &lt;a href="http://relengofthenerds.blogspot.com/2009/10/hudson-is-sweet-now-build-can-tweet.html"&gt;&amp;gt;&amp;gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;And there are probably many more...&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
We are going to create a &lt;b&gt;read-only&lt;/b&gt; connector to start with, as these build processes and hardware will not read any responses to their tweets or please their egos by following mentions!&lt;br /&gt;
&lt;h4&gt;Initial Setup&lt;/h4&gt;Install the Industrial SQL Connector for Mylyn from the &lt;a href="http://svn.codespot.com/a/eclipselabs.org/industrial-mylyn/trunk/com.industrialtsi.mylyn.site/"&gt;update site&lt;/a&gt; (&lt;a href="http://wiki.eclipse.org/Mylyn/Incubator/Generic_SQL_Connector#Update_Site"&gt;detailed instructions&lt;/a&gt;) or &lt;a href="http://wiki.eclipse.org/Mylyn/Incubator/Generic_SQL_Connector#Temporary_SVN"&gt;extract the source from SVN&lt;/a&gt;.&lt;br /&gt;
&lt;i&gt;2011 02 22 Updated links to EclipseLabs update site&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Create fragment project&lt;/h4&gt;Create a fragment project selecting the &lt;b&gt;org.eclipse.mylyn.industrial.core&lt;/b&gt; plugin as host.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/SuTMj-k2D2I/AAAAAAAAGKA/4OuIFfSGl8U/s1600-h/twitter-fragment.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 204px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/SuTMj-k2D2I/AAAAAAAAGKA/4OuIFfSGl8U/s320/twitter-fragment.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396663171961720674" /&gt;&lt;/a&gt;.&lt;br /&gt;
Create a &lt;b&gt;lib&lt;/b&gt; folder and a &lt;b&gt;run-configs&lt;/b&gt; folder. (I need to create a template wizard for this soon!)&lt;br /&gt;
&lt;h4&gt;Select twitter java library&lt;/h4&gt;I looked at the &lt;a href="http://apiwiki.twitter.com/Libraries#Javanbsp"&gt;twitter API wiki&lt;/a&gt; and chose for &lt;a href="http://yusuke.homeip.net/twitter4j/en/index.html"&gt;Twitter4J&lt;/a&gt; as various source considered it most mature. Download it and install it in the fragment's lib folder. There is no need to export any packages!&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_j0a2Zacz7c0/SuTVmI8MngI/AAAAAAAAGKg/vXnKqtvMPfo/s1600-h/twitter-layout.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 309px; height: 320px;" src="http://3.bp.blogspot.com/_j0a2Zacz7c0/SuTVmI8MngI/AAAAAAAAGKg/vXnKqtvMPfo/s320/twitter-layout.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396673104708410882" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Create Persistor extension&lt;/h4&gt;In the extensions tab of the &lt;code&gt;fragment.xml&lt;/code&gt; create an extension to extension point &lt;code&gt;org.eclipse.mylyn.industrial.core.persistor&lt;/code&gt; and create a new &lt;code&gt;persistor-config&lt;/code&gt;.&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_j0a2Zacz7c0/SuTQZ4Er78I/AAAAAAAAGKY/vtQZgPKkYPg/s1600-h/twitter-persistor.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 152px;" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/SuTQZ4Er78I/AAAAAAAAGKY/vtQZgPKkYPg/s320/twitter-persistor.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396667396464046018" /&gt;&lt;/a&gt;&lt;br /&gt;
Then set the repository attributes to false except for &lt;code&gt;can-create-task-from-key&lt;/code&gt; and &lt;code&gt;can-query-repository&lt;/code&gt;&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_j0a2Zacz7c0/SuTQZrV5ByI/AAAAAAAAGKQ/-OxjCpE39hU/s1600-h/twitter-repository.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 153px;" src="http://2.bp.blogspot.com/_j0a2Zacz7c0/SuTQZrV5ByI/AAAAAAAAGKQ/-OxjCpE39hU/s320/twitter-repository.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396667393046546210" /&gt;&lt;/a&gt;&lt;br /&gt;
Then set all the task attributes to read-only.&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/SuTQZcXAJWI/AAAAAAAAGKI/-2fhQF4i5mc/s1600-h/twitter-taskatts.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 153px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/SuTQZcXAJWI/AAAAAAAAGKI/-2fhQF4i5mc/s320/twitter-taskatts.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396667389024675170" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Code the Persistor extension using the library&lt;/h4&gt;Now we click on the &lt;code&gt;persistor&lt;/code&gt; hyperlink to create the Java class, we extend the class &lt;code&gt;PersistorAdapter&lt;/code&gt; that basicaly logs all calls and returns sensible defaults. &lt;br /&gt;
To query and show tasks we need to implement &lt;code&gt;fetchTask(...)&lt;/code&gt;, &lt;code&gt;findTasks(...)&lt;/code&gt;, and to make querying easier also &lt;code&gt;findlegalOwners(...)&lt;/code&gt;.&lt;br /&gt;
&lt;pre class="brush: java"&gt;package org.eclipse.mylyn.industrial.twitter.persistor;
[...]
public class TwitterPersistor extends PersistorAdapter {

public final static String ID = "org.eclipse.mylyn.industrial.twitter"; //$NON-NLS-1$

private User user;

private Twitter twitter;

public TwitterPersistor() {
}

/**
* @return the twitter, initialize if needed
*/
public Twitter getTwitter(TaskRepository repository) {
if (null == twitter) {
AuthenticationCredentials credentials = repository
.getCredentials(AuthenticationType.REPOSITORY);
String twitterPassword = credentials.getPassword();
String twitterID = credentials.getUserName();
twitter = new Twitter(twitterID, twitterPassword);
}
return twitter;
}

@Override
public IndustrialTask fetchTask(TaskRepository repository, String... taskId)
throws SQLException, CoreException {
Twitter t = getTwitter(repository);

long id = Long.parseLong(taskId[0]);

try {
twitter4j.Status result = t.showStatus(id);
IndustrialTask tweet = new IndustrialTask(repository.getUrl(),
taskId[0], result.getText());

tweet.setOwner(result.getUser().getName());
tweet.setCreationDate(result.getCreatedAt());
tweet.setNotes(result.getText());
return tweet;
} catch (TwitterException e) {
IStatus status = CoreLogger.createStatus(IStatus.ERROR, e);
throw new CoreException(status);
}
}

@Override
public List&amp;lt;String&amp;gt; getLegalOwners(TaskRepository repository)
throws SQLException, CoreException {
Twitter t = getTwitter(repository);

List&amp;lt;String&amp;gt; result = new ArrayList&amp;lt;String&amp;gt;();
List&amp;lt;User&amp;gt; friends;
try {
friends = t.getFriendsStatuses();
for (User friend : friends) {
result.add(friend.getName());
}
return result;
} catch (TwitterException e) {
IStatus status = CoreLogger.createStatus(IStatus.ERROR, e);
throw new CoreException(status);
}
}

@Override
public List&amp;lt;String&amp;gt; findTasks(TaskRepository repository,
IndustrialQueryParams criteria) throws SQLException, CoreException {
Twitter t = getTwitter(repository);

List&amp;lt;String&amp;gt; result = new ArrayList&amp;lt;String&amp;gt;();
try {
for (String user : criteria.getOwner()) {
List&amp;lt;twitter4j.Status&amp;gt; timeline;
timeline = t.getUserTimeline(user);
for (twitter4j.Status s : timeline) {
result.add(Long.toString(s.getId()));
}
}
return result;
} catch (TwitterException e) {
IStatus status = CoreLogger.createStatus(IStatus.ERROR, e);
throw new CoreException(status);
}
}

@Override
public boolean validate(TaskRepository repository) throws SQLException,
CoreException {
return null != getTwitter(repository);
}

@Override
public boolean isAuthenticated(TaskRepository repository)
throws SQLException, CoreException {

try {
user = getTwitter(repository).verifyCredentials();
return true;
} catch (TwitterException e) {
Status status = new Status(IStatus.ERROR, TwitterPersistor.ID,
"Cannot validate Twitter"); //$NON-NLS-1$
throw new CoreException(status);
}
}
}
&lt;/pre&gt;&lt;br /&gt;
We add the methods &lt;code&gt;isAuthenticated(...)&lt;/code&gt; and &lt;code&gt;validate(...)&lt;/code&gt; but both can just default to returning true when just statrting your development.&lt;br /&gt;
&lt;h4&gt;Now Run and we're Done!&lt;/h4&gt;&lt;br /&gt;
OK the we run the whole project and create a new twitter repository, using your own name and password:&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_j0a2Zacz7c0/SuTXM-5V5TI/AAAAAAAAGKw/_upISq0T0XA/s1600-h/twitter-newrepo.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 303px; height: 320px;" src="http://3.bp.blogspot.com/_j0a2Zacz7c0/SuTXM-5V5TI/AAAAAAAAGKw/_upISq0T0XA/s320/twitter-newrepo.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396674871538607410" /&gt;&lt;/a&gt;&lt;br /&gt;
It will even check whether we entered our password correctly when we press the &lt;b&gt;Validate&lt;/b&gt; button and call &lt;code&gt;validate(...)&lt;/code&gt;&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_j0a2Zacz7c0/SuTXM_EUsfI/AAAAAAAAGKo/kdnqDg5j31E/s1600-h/twitter-repovalidates.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 303px; height: 320px;" src="http://2.bp.blogspot.com/_j0a2Zacz7c0/SuTXM_EUsfI/AAAAAAAAGKo/kdnqDg5j31E/s320/twitter-repovalidates.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396674871584666098" /&gt;&lt;/a&gt;&lt;br /&gt;
We can now do a simple query on the list of tweeters we are following using a form based query.&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/SuTYQ8guGiI/AAAAAAAAGLA/c6XHqjvopAA/s1600-h/twitter-query.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 282px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/SuTYQ8guGiI/AAAAAAAAGLA/c6XHqjvopAA/s320/twitter-query.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396676039129569826" /&gt;&lt;/a&gt;&lt;br /&gt;
And presto, we have the tweeted AS/400 messages in our Mylyn Tasklist!&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/SuTYQlLL5lI/AAAAAAAAGK4/qMp0A6yDBP8/s1600-h/twitter-tasklist.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 254px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/SuTYQlLL5lI/AAAAAAAAGK4/qMp0A6yDBP8/s320/twitter-tasklist.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5396676032865232466" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;&lt;br /&gt;
By parameterizing the creation of Mylyn connectors, the Industrial SQL Connector for Mylyn makes creating a quick and dirty connector to almost anything very, very easy. Creating this connector took me a little more than 2 hours, almost less than creating this blog entry.&lt;br /&gt;
Source code can be downloaded &lt;a href="http://bugs.industrial-tsi.com/mylyndb/industrial-twitter-0.1.0.zip"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-1500900968790844200?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/atxMieBRQUpS2JyxDWf5C3gvVgo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/atxMieBRQUpS2JyxDWf5C3gvVgo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/atxMieBRQUpS2JyxDWf5C3gvVgo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/atxMieBRQUpS2JyxDWf5C3gvVgo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/uQHWelNXJFk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/1500900968790844200/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2009/10/diy-mylyn-twitter-connector.html#comment-form" title="1 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/1500900968790844200?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/1500900968790844200?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/uQHWelNXJFk/diy-mylyn-twitter-connector.html" title="DIY Mylyn Twitter connector" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_j0a2Zacz7c0/SuTMj-k2D2I/AAAAAAAAGKA/4OuIFfSGl8U/s72-c/twitter-fragment.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2009/10/diy-mylyn-twitter-connector.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04GRXw9eSp7ImA9WxNWFkQ.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-2842293639077025846</id><published>2009-10-16T15:11:00.004+02:00</published><updated>2009-10-16T15:32:04.261+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-16T15:32:04.261+02:00</app:edited><title>Eclipse RCP in a day</title><content type="html">Yesterday I spent a very pleasurable afternoon and evening helping out with the &lt;em&gt;Eclipse RCP in a Day&lt;/em&gt; course organized by Industrial TSI for members of NL JUG, the Dutch Java Users Group. Topics covered were: OSGi, RCP Application, plugins, Views, Commands, Branding and building applications.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_j0a2Zacz7c0/SthztSjdcII/AAAAAAAAGI8/LHMiIrGZUcw/s1600-h/DSC_5952.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/SthztSjdcII/AAAAAAAAGI8/LHMiIrGZUcw/s320/DSC_5952.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5393187775688044674" /&gt;&lt;/a&gt;&lt;br /&gt;Quite a number of people participated, so maybe we can soon welcome more members to the Eclipse tribe...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_j0a2Zacz7c0/Sth00nksNrI/AAAAAAAAGJE/MPjlt5BdcAQ/s1600-h/DSC_5955.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/Sth00nksNrI/AAAAAAAAGJE/MPjlt5BdcAQ/s320/DSC_5955.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5393189001101063858" /&gt;&lt;/a&gt;&lt;br /&gt;The training was given by Wim Jongman, the Dutch Mr Eclipse himself!&lt;br /&gt;&lt;br /&gt;Lets hope we see these people back for the &lt;a href="http://www.eclipse-training.net/training_courses/rcp/"&gt;Eclipse training series&lt;/a&gt; where all will be covered in more depth.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-2842293639077025846?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8BNQw9FZbKvxQJiCbguQZRKhouI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8BNQw9FZbKvxQJiCbguQZRKhouI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8BNQw9FZbKvxQJiCbguQZRKhouI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8BNQw9FZbKvxQJiCbguQZRKhouI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/RIKo4IB8rek" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/2842293639077025846/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2009/10/eclipse-rcp-in-day.html#comment-form" title="2 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/2842293639077025846?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/2842293639077025846?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/RIKo4IB8rek/eclipse-rcp-in-day.html" title="Eclipse RCP in a day" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_j0a2Zacz7c0/SthztSjdcII/AAAAAAAAGI8/LHMiIrGZUcw/s72-c/DSC_5952.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2009/10/eclipse-rcp-in-day.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcBRXYyfCp7ImA9WxNXE0U.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-7351509751439477829</id><published>2009-10-01T09:16:00.005+02:00</published><updated>2009-10-01T09:27:34.894+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-01T09:27:34.894+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="app store" /><category scheme="http://www.blogger.com/atom/ns#" term="discovery" /><category scheme="http://www.blogger.com/atom/ns#" term="services" /><category scheme="http://www.blogger.com/atom/ns#" term="DUTCH ECLIPSE USER GROUP" /><title>Wanted: Eclipse App &amp; Service Store</title><content type="html">iTunes app store success with over  a &lt;a href="http://www.apple.com/itunes/billion-app-countdown/"&gt;billion&lt;/a&gt; downloads begs for an Eclipse equivalent for not only providing updates but also discovery of plugins &lt;em&gt;and services and training&lt;/em&gt;!&lt;br /&gt;&lt;br /&gt;Read &lt;a href="http://redmonk.com/sogrady/2009/09/30/next-gen-app-stores/"&gt;tecosystems&lt;/a&gt; for an UI outline and &lt;a href="http://industrial-tsi-wim.blogspot.com/2009/06/aware-workbench-1-win-t-shirt.html"&gt;&amp;gt; /dev/null&lt;/a&gt; for The Aware Workbench.&lt;br /&gt;&lt;br /&gt;I can open a bug for this on bugs.eclipse.org but under what part of Eclipse should it be filed: Platform? Incubator? Working Groups?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-7351509751439477829?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IOFMaWxFxAfzck9ASGQW3faYtC4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IOFMaWxFxAfzck9ASGQW3faYtC4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IOFMaWxFxAfzck9ASGQW3faYtC4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IOFMaWxFxAfzck9ASGQW3faYtC4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/i0oP_P8qoWo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/7351509751439477829/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2009/10/itunes-app-store-success-with-over.html#comment-form" title="4 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/7351509751439477829?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/7351509751439477829?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/i0oP_P8qoWo/itunes-app-store-success-with-over.html" title="Wanted: Eclipse App &amp; Service Store" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2009/10/itunes-app-store-success-with-over.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8HRnkyeip7ImA9WxNbFUg.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-497129352410971679</id><published>2009-09-17T14:50:00.010+02:00</published><updated>2009-11-18T15:00:37.792+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-18T15:00:37.792+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sql" /><category scheme="http://www.blogger.com/atom/ns#" term="industrial" /><category scheme="http://www.blogger.com/atom/ns#" term="ibatis" /><category scheme="http://www.blogger.com/atom/ns#" term="UNION queries" /><category scheme="http://www.blogger.com/atom/ns#" term="Mylyn" /><category scheme="http://www.blogger.com/atom/ns#" term="connector" /><category scheme="http://www.blogger.com/atom/ns#" term="eventum" /><title>Industrial SQL Connector and Eventum: UNION queries</title><content type="html">After playing around with &lt;a href="http://dev.mysql.com/downloads/other/eventum/"&gt;Eventum&lt;/a&gt; some more as a result of looking into the Mylyn &lt;a href="https://bugs.eclipse.org/150174"&gt;[connector] Eventum&lt;/a&gt; request I noticed that Eventum supports a very elaborate system of comments: Internal Notes, Phone calls, Drafts, emails and attachments in addition to the issue status history we included earlier. &lt;br /&gt;Our question for today is whether we can support this diversity with the simplified task model provided with the Industrial SQL Connector?&lt;br /&gt;&lt;h4&gt;MySQL UNION queries&lt;/h4&gt;MySQL provides the &lt;code&gt;UNION&lt;/code&gt; statement to merge the results of two or more &lt;code&gt;SELECT&lt;/code&gt; queries. So we try the following edit of CommentMapEventum.xml:&lt;br /&gt;&lt;pre class="brush: xml;highlight: [13,22,23,24,25,26,27,28,29,30,31,32,33]"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE sqlMap&lt;br /&gt;PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"&lt;br /&gt;"http://ibatis.apache.org/dtd/sql-map-2.dtd" &amp;gt;&lt;br /&gt;&amp;lt;!-- &lt;br /&gt;licensed under ECL, to connect Mylyn to SQL databases&lt;br /&gt;Copyright 2009 Maarten Meijer, all right reserved.&lt;br /&gt;http://eclipsophy.blogger.com&lt;br /&gt;--&amp;gt; &lt;br /&gt;&amp;lt;sqlMap namespace="Comments"&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;select id="getForKey"  resultClass="ibatisComment"&amp;gt;&lt;br /&gt; (SELECT&lt;br /&gt; his_created_date as groupKey,&lt;br /&gt; usr_email as author,&lt;br /&gt; usr_full_name as authorName,&lt;br /&gt; his_created_date as date,&lt;br /&gt; his_summary as text&lt;br /&gt; FROM eventum_issue_history&lt;br /&gt;  INNER JOIN eventum_user ON his_usr_id = usr_id&lt;br /&gt; WHERE his_iss_id = #value#&lt;br /&gt; ORDER BY his_id)&lt;br /&gt;UNION&lt;br /&gt; (SELECT&lt;br /&gt; not_created_date as groupKey,&lt;br /&gt; usr_email as author,&lt;br /&gt; usr_full_name as authorName,&lt;br /&gt; not_created_date as date,&lt;br /&gt; not_note as text&lt;br /&gt; FROM eventum_note&lt;br /&gt;  INNER JOIN eventum_user ON not_usr_id = usr_id&lt;br /&gt; WHERE not_iss_id = #value#&lt;br /&gt; ORDER BY not_id)&lt;br /&gt; &amp;lt;/select&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/sqlMap&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;h4&gt;Results from modified query&lt;/h4&gt;We run again and look at an issue with an internal note attached:&lt;br /&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_j0a2Zacz7c0/SrIz-qxTVtI/AAAAAAAAGCc/IZ1S1Zmfilw/s1600-h/eventum-comments-UNION.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 319px;" src="http://2.bp.blogspot.com/_j0a2Zacz7c0/SrIz-qxTVtI/AAAAAAAAGCc/IZ1S1Zmfilw/s320/eventum-comments-UNION.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5382421656387147474" /&gt;&lt;/a&gt;&lt;br /&gt;We see the internal notes text merged with the history. When we use a &lt;code&gt;CONCAT()&lt;/code&gt; statement we can even prefix different parts with different makeup or create more elaborate text bits.&lt;br /&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;&lt;br /&gt;If you know how to write SQL queries you can do fairly complex stuff with the Industrial SQL Connector.&lt;br /&gt;So go ahead and give it a try yourself! Installation instructions are provided &lt;a href="http://eclipsophy.blogspot.com/2009/09/industrial-sql-connector-and-eventum.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-497129352410971679?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MP22k_fVRyV0QA3_30ZOMtE3p-Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MP22k_fVRyV0QA3_30ZOMtE3p-Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MP22k_fVRyV0QA3_30ZOMtE3p-Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MP22k_fVRyV0QA3_30ZOMtE3p-Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/zJslHexcgWw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/497129352410971679/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2009/09/industrial-sql-connector-and-eventum_17.html#comment-form" title="0 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/497129352410971679?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/497129352410971679?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/zJslHexcgWw/industrial-sql-connector-and-eventum_17.html" title="Industrial SQL Connector and Eventum: UNION queries" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_j0a2Zacz7c0/SrIz-qxTVtI/AAAAAAAAGCc/IZ1S1Zmfilw/s72-c/eventum-comments-UNION.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2009/09/industrial-sql-connector-and-eventum_17.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EARHg9eCp7ImA9Wx9bE0o.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-235741437502853987</id><published>2009-09-17T11:46:00.008+02:00</published><updated>2011-02-22T11:47:25.660+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-22T11:47:25.660+01:00</app:edited><title>Industrial SQL Connector for Mylyn - version 0.9.4.v20090917</title><content type="html">While using the Industrial SQL Connector to connect Mylyn to an Eventum repository some bugs were uncovered.&lt;br /&gt;
These were fixed and a new release 0.9.4.v20090917 posted to the &lt;a href="http://bugs.industrial-tsi.com/mylyndb/"&gt;update site&lt;/a&gt;. Source is also available from the SVN source repository at &lt;a href="svn://bugs.industrial-tsi.com/mylyn_gsc/trunk"&gt;svn://bugs.industrial-tsi.com/mylyn_gsc/trunk&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;2011 02 22 After moving to EclipseLabs the update site is now &lt;a href="http://svn.codespot.com/a/eclipselabs.org/industrial-mylyn/trunk/com.industrialtsi.mylyn.site/"&gt;here&lt;/a&gt; and SVN is here &lt;a href="http://svn.codespot.com/a/eclipselabs.org/industrial-mylyn/trunk/"&gt;http://svn.codespot.com/a/eclipselabs.org/industrial-mylyn/trunk/&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Problems fixed&lt;/h4&gt;- &lt;code&gt;can-query-repository&lt;/code&gt; always returned true, now listens to setting in &lt;code&gt;repository-attributes&lt;/code&gt;&lt;br /&gt;
when false, legal property values are no longer queried for, easier when creating a connector, you can go step by step.&lt;br /&gt;
- &lt;code&gt;can-synchronize-tasks &lt;/code&gt; always returned true, now listens to setting in &lt;code&gt;repository-attributes&lt;/code&gt;&lt;br /&gt;
- &lt;code&gt;can-delete-tasks&lt;/code&gt; (Mylyn since 3.3) was unsupported, now listens to setting in &lt;code&gt;repository-attributes&lt;/code&gt;&lt;br /&gt;
&lt;h4&gt;Enhancements&lt;/h4&gt;Added two more query fields in the Fom Based Query wizard: &lt;br /&gt;
"Description" and "Comments", so you can now search these as well when you can come up with the right query.&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/SrIHEfGu7vI/AAAAAAAAGCQ/iirFr-9iHjA/s1600-h/newQueryProperties.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 254px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/SrIHEfGu7vI/AAAAAAAAGCQ/iirFr-9iHjA/s320/newQueryProperties.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5382372278311775986" /&gt;&lt;/a&gt;&lt;br /&gt;
These can be referenced as &lt;code&gt;notes&lt;/code&gt; and &lt;code&gt;comments&lt;/code&gt; dynamic parameters in the &lt;code&gt;searchForKey&lt;/code&gt; query in the TaskMapXXX.xml.&lt;br /&gt;
&lt;h4&gt;Complete Eventum connector 0.3.0&lt;/h4&gt;A zip complete with source of the Eventum connector so far can be downloaded from &lt;a href="http://industrial-mylyn.eclipselabs.org.codespot.com/files/industrial-eventum-0.3.0.zip"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-235741437502853987?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mAqLLEeloFjmAmRgSkfs6a0jDSo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mAqLLEeloFjmAmRgSkfs6a0jDSo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mAqLLEeloFjmAmRgSkfs6a0jDSo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mAqLLEeloFjmAmRgSkfs6a0jDSo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/BZRQp0FQ15I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/235741437502853987/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2009/09/industrial-sql-connector-for-mylyn.html#comment-form" title="1 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/235741437502853987?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/235741437502853987?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/BZRQp0FQ15I/industrial-sql-connector-for-mylyn.html" title="Industrial SQL Connector for Mylyn - version 0.9.4.v20090917" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_j0a2Zacz7c0/SrIHEfGu7vI/AAAAAAAAGCQ/iirFr-9iHjA/s72-c/newQueryProperties.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2009/09/industrial-sql-connector-for-mylyn.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8BSHszeip7ImA9WxNbFUg.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-5124483376104390592</id><published>2009-09-15T21:16:00.014+02:00</published><updated>2009-11-18T15:00:59.582+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-18T15:00:59.582+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sql" /><category scheme="http://www.blogger.com/atom/ns#" term="industrial" /><category scheme="http://www.blogger.com/atom/ns#" term="ibatis" /><category scheme="http://www.blogger.com/atom/ns#" term="attachments" /><category scheme="http://www.blogger.com/atom/ns#" term="Mylyn" /><category scheme="http://www.blogger.com/atom/ns#" term="connector" /><category scheme="http://www.blogger.com/atom/ns#" term="eventum" /><title>Industrial SQL connector and Eventum: adding attachments</title><content type="html">Last time we covered Eventum task and comments, this time we'll make the attachments show up in Mylyn.&lt;br /&gt;&lt;h4&gt;Eventum attachments&lt;/h4&gt;&lt;br /&gt;We create an attachment in our Eventum test installation and see what happens. Two tables are involved in the handling of attachments: &lt;code&gt;eventum_issue_attachment&lt;/code&gt; containing the meta information like date created and creator, and &lt;code&gt;eventum_issue_attachment_file&lt;/code&gt; containing actual data, filename, mime type and filesize.&lt;br /&gt;&lt;h4&gt;Modifying the repository-config settings&lt;/h4&gt;&lt;br /&gt;We must edit fragment.xml and set the &lt;code&gt;can-get-attachments&lt;/code&gt; property to true.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/SrDtsLdN8sI/AAAAAAAAGCE/IqX4zmq1FT4/s1600-h/project-step23.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 147px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/SrDtsLdN8sI/AAAAAAAAGCE/IqX4zmq1FT4/s320/project-step23.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5382062897953108674" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;Creating the attachment data query&lt;/h4&gt;&lt;br /&gt;To return the attachment meta-data we must edit CommentsMapEventum.xml and set the  &lt;code&gt;getAttachmentForKey&lt;/code&gt; query as follows:&lt;br /&gt;&lt;pre  class="brush: xml; highlight: [12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28]"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE sqlMap&lt;br /&gt;   PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"&lt;br /&gt;   "http://ibatis.apache.org/dtd/sql-map-2.dtd" &amp;gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;   licensed under ECL, to connect Mylyn to SQL databases&lt;br /&gt;   Copyright 2009 Maarten Meijer, all right reserved.&lt;br /&gt;   http://eclipsophy.blogger.com&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;sqlMap namespace="Comments"&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;select id="getAttachmentForKey"  resultClass="ibatisAttachment"&amp;gt;&lt;br /&gt;&amp;lt;!-- meta data only, return the blob data separately --&amp;gt;&lt;br /&gt;SELECT&lt;br /&gt; usr_email as author,&lt;br /&gt; iaf_filetype as ctype,&lt;br /&gt; iat_created_date as date,&lt;br /&gt; iat_description as description,&lt;br /&gt; iaf_filename as filename,&lt;br /&gt; iaf_id as id,&lt;br /&gt; iaf_filesize as size,&lt;br /&gt; iat_iss_id as taskId,&lt;br /&gt; '' as url&lt;br /&gt;FROM eventum_issue_attachment&lt;br /&gt; INNER JOIN eventum_user ON iat_usr_id = usr_id&lt;br /&gt; INNER JOIN eventum_issue_attachment_file ON iat_id = iaf_iat_id&lt;br /&gt;WHERE iat_iss_id = #value#&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/sqlMap&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;h4&gt;Creating the attachment BLOB query&lt;/h4&gt;&lt;br /&gt;To return the attachment binary BLOB we must edit CommentsMapEventum.xml and set the &lt;code&gt;getAttachmentDataForKey&lt;/code&gt; query as follows:&lt;br /&gt;&lt;pre class="brush: xml; highlight: [12,13,14,16,17,18,19,20,21]" &gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE sqlMap&lt;br /&gt;   PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"&lt;br /&gt;   "http://ibatis.apache.org/dtd/sql-map-2.dtd" &amp;gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;   licensed under ECL, to connect Mylyn to SQL databases&lt;br /&gt;   Copyright 2009 Maarten Meijer, all right reserved.&lt;br /&gt;   http://eclipsophy.blogger.com&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;sqlMap namespace="Comments"&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;resultMap id="attachmentDataMap" class="ibatisAttachment"&amp;gt;&lt;br /&gt;&amp;lt;result property="blob" column="iaf_file" jdbcType="BLOB" javaType="[B"/&amp;gt;&lt;br /&gt;&amp;lt;/resultMap&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;select id="getAttachmentDataForKey" resultMap="attachmentDataMap"&amp;gt;&lt;br /&gt;&amp;lt;!-- return the blob data --&amp;gt;&lt;br /&gt;SELECT iaf_file&lt;br /&gt;FROM eventum_issue_attachment_file&lt;br /&gt;WHERE iaf_id = #value#&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/sqlMap&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;h4&gt;The attachment displays nicely but...&lt;/h4&gt;&lt;br /&gt;We can see the attachments in the Task Editor, an image uploaded using the web interface, but when we right-click we see several actions that do not work.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/SrDtroQXdtI/AAAAAAAAGB8/TlOzfcQik3U/s1600-h/project-step24.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 278px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/SrDtroQXdtI/AAAAAAAAGB8/TlOzfcQik3U/s320/project-step24.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5382062888503965394" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Open With Browser&lt;/b&gt; will not work, as the Eventum attachments are stored in a database, so they have no web url and cannot be shown in the browser. This is reported under &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=249021"&gt;bug 249021&lt;/a&gt;. This action should be dimmed when no URL is present.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Open With/Default Editor&lt;/b&gt;This functionality was recently added, but does not take into account the case where no URL is present. This is in the works under &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=220314"&gt;bug 220314&lt;/a&gt; and should be dimmed when no URL is present.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Make Local Copy and Open in Browser&lt;/b&gt; this is Industrial Connector functionality present to remedy the problems above, but is not a really neat solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-5124483376104390592?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/voQk-3d1tMPSACOhuNlcZD-au9s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/voQk-3d1tMPSACOhuNlcZD-au9s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/voQk-3d1tMPSACOhuNlcZD-au9s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/voQk-3d1tMPSACOhuNlcZD-au9s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/UFdLi7B8WAw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/5124483376104390592/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2009/09/industrial-sql-connector-and-eventum_15.html#comment-form" title="0 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/5124483376104390592?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/5124483376104390592?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/UFdLi7B8WAw/industrial-sql-connector-and-eventum_15.html" title="Industrial SQL connector and Eventum: adding attachments" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_j0a2Zacz7c0/SrDtsLdN8sI/AAAAAAAAGCE/IqX4zmq1FT4/s72-c/project-step23.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2009/09/industrial-sql-connector-and-eventum_15.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04GRXg_eSp7ImA9Wx9bE0o.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-6283811247034822539</id><published>2009-09-07T08:46:00.040+02:00</published><updated>2011-02-22T11:52:04.641+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-22T11:52:04.641+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sql" /><category scheme="http://www.blogger.com/atom/ns#" term="industrial" /><category scheme="http://www.blogger.com/atom/ns#" term="ibatis" /><category scheme="http://www.blogger.com/atom/ns#" term="Mylyn" /><category scheme="http://www.blogger.com/atom/ns#" term="connector" /><category scheme="http://www.blogger.com/atom/ns#" term="eventum" /><title>Industrial SQL Connector and Eventum</title><content type="html">When looking at the &lt;a href="http://www.eclipse.org/mylyn/"&gt;Mylyn&lt;/a&gt; connector &lt;a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;chfieldto=Now&amp;product=Mylyn&amp;query_format=advanced&amp;remaction=&amp;short_desc=%5Bconnector%5D&amp;short_desc_type=anywordssubstr&amp;order=votes%2Cbug_id"&gt;Most Wanted List&lt;/a&gt; you'll see many issue tracker that do not have a dedicated connector to the Mylyn Eclipse Task based UI.&lt;br /&gt;
&lt;br /&gt;
Many of these are backed by databases to store all the complex relations and workflow. In the next several blogs I'm going to demonstrate how easy it is to connect Mylyn to any database backed issue tracker using the &lt;a href="http://wiki.eclipse.org/Mylyn/Incubator/Generic_SQL_Connector"&gt;Industrial SQL Connector&lt;/a&gt;.&lt;br /&gt;
For the example I will be using &lt;a href="http://dev.mysql.com/downloads/other/eventum/"&gt;Eventum&lt;/a&gt;, created and used by MySQL, number 4 on the list. It is also OSS, so we can easily get it to play around with.&lt;br /&gt;
This will not be a full fledged connector, but a quick start to get the task change notification directly from email into Eclipse as first step in making you &lt;a href="http://tasktop.com/blog/mylyn/rescue-inbox-from-bug"&gt;more productive&lt;/a&gt;.&lt;br /&gt;
&lt;h4&gt;Install Industrial SQL Connector&lt;/h4&gt;&lt;br /&gt;
This connector can be installed from &lt;a href="http://svn.codespot.com/a/eclipselabs.org/industrial-mylyn/trunk/com.industrialtsi.mylyn.site/"&gt;http://svn.codespot.com/a/eclipselabs.org/industrial-mylyn/trunk/com.industrialtsi.mylyn.site/&lt;/a&gt;&lt;br /&gt;
&lt;i&gt;Note Images display Pre EclipseLabs update site&lt;/i&gt;&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/SqTCSL_ZS2I/AAAAAAAAF8g/SxxSl4aXuOY/s1600-h/industrial-install.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 266px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/SqTCSL_ZS2I/AAAAAAAAF8g/SxxSl4aXuOY/s320/industrial-install.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5378637472699337570" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Download empty MySQL connector Fragment&lt;/h4&gt;&lt;br /&gt;
You can download a ready made empty MySQL connector Fragment as described &lt;a href="http://eclipsophy.blogspot.com/2009/08/connecting-mylyn-to-mysql-database.html#resources"&gt;here&lt;/a&gt; and unzip it and rename some files, so we get this structure:&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTD6VjaUhI/AAAAAAAAF9A/xl1NPk1tzhE/s1600-h/eventum-fragment.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 301px;" src="http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTD6VjaUhI/AAAAAAAAF9A/xl1NPk1tzhE/s320/eventum-fragment.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5378639261972714002" /&gt;&lt;/a&gt;&lt;br /&gt;
I want to make this easier but need code from PDE, please vote for &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=288547"&gt;bug 288547: Add a NewFragmentFromTemplateWizard with API to make Fragments from templates&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Install Eventum 2.2&lt;/h4&gt;&lt;br /&gt;
Install this on you local machine following instructions provided &lt;a href="http://forge.mysql.com/wiki/Eventum/"&gt;here&lt;/a&gt;, so you can inspect the database tables, create and test the queries.&lt;br /&gt;
Then when you are &lt;em&gt;completely satisfied&lt;/em&gt; that it works, do you change and connect to the production database!&lt;br /&gt;
Once the default install is completed use a database inspection tool like phpMyAdmin or soemthing else to familiarize yourself with the database structure. Luckily the Eventum designers used a very consistent naming scheme for TABLES and COLUMNS!&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/SqTCRtc39NI/AAAAAAAAF8Y/IJabL7_3Giw/s1600-h/eventum-database-structure.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 298px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/SqTCRtc39NI/AAAAAAAAF8Y/IJabL7_3Giw/s320/eventum-database-structure.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5378637464501482706" /&gt;&lt;/a&gt;&lt;br /&gt;
Once completed you can log into the system and start creating some initial users, projects and issues.&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTCTHGDIJI/AAAAAAAAF8w/28TDziDEOZQ/s1600-h/eventum-list-of-issues.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 250px;" src="http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTCTHGDIJI/AAAAAAAAF8w/28TDziDEOZQ/s320/eventum-list-of-issues.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5378637488564936850" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_j0a2Zacz7c0/SqTD7oHW4UI/AAAAAAAAF9Q/__RrcWvIKsw/s1600-h/eventum-test-issue-1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 250px;" src="http://3.bp.blogspot.com/_j0a2Zacz7c0/SqTD7oHW4UI/AAAAAAAAF9Q/__RrcWvIKsw/s320/eventum-test-issue-1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5378639284135190850" /&gt;&lt;/a&gt;&lt;br /&gt;
While creating a user, a project and a test issue in the web interface, make notes of what backend database tables change and get filled, because the Industrial SQL Connector is all about mapping database tables to task fields. Databases are usually constructed with record ID's for the machine and record names or titles for us, the users. As Mylyn is about making us more productive, we will as a matter of policy retrieve the human-readable formats from the database and map those back into records using &lt;code&gt;JOIN&lt;/code&gt; statements. The preliminary mapping is as follows:&lt;br /&gt;
&lt;table&gt;&lt;tr&gt;&lt;th&gt;Task Side&lt;/th&gt;&lt;th&gt;Eventum Table&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Tasks&lt;/td&gt;&lt;td&gt;eventum_issue&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Products&lt;/td&gt;&lt;td&gt;eventum_project&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Issue Status&lt;/td&gt;&lt;td&gt;eventum_status, eventum_resolution&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Issue Priority&lt;/td&gt;&lt;td&gt;eventum_project_priority&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Comments&lt;/td&gt;&lt;td&gt;eventum_issue_history&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;People&lt;/td&gt;&lt;td&gt;eventum_user, eventum_issue_user&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;h4&gt;Creating the Connector: step 1 creating extension&lt;/h4&gt;&lt;br /&gt;
Open the fragment.xml and create extension &lt;code&gt;org.eclipse.mylyn.industrial.core.persistor&lt;/code&gt; and create a &lt;code&gt;persistor-config&lt;/code&gt;, add an &lt;code&gt;ibatis-config&lt;/code&gt;. Fill in the fields as below:&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_j0a2Zacz7c0/SqTPc7ga7NI/AAAAAAAAF9Y/4tmVh_5WaI0/s1600-h/eventum-fragment-extension.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 251px;" src="http://4.bp.blogspot.com/_j0a2Zacz7c0/SqTPc7ga7NI/AAAAAAAAF9Y/4tmVh_5WaI0/s320/eventum-fragment-extension.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5378651950904175826" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Creating the Connector: step 2 retrieving repository elements&lt;/h4&gt;&lt;br /&gt;
Edit the file &lt;code&gt;maps/eventum-direct-db/RepositoryMapEventum.xml&lt;/code&gt; as follows.&lt;br /&gt;
&lt;pre class="brush: xml; highlight: [19, 23, 27, 33]"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd" &amp;gt;
&amp;lt;!-- 
licensed under ECL, to connect Mylyn to SQL databases
Copyright 2009 Maarten Meijer, all right reserved.
http://eclipsophy.blogger.com

--&amp;gt; 
&amp;lt;sqlMap namespace="Repository"&amp;gt;
&amp;lt;!--
Legal issue owners and other legal values for fields are taken here
from DISTINCT values in the database. An alternative would be a
SELECT from any table containing legal users.
--&amp;gt;
&amp;lt;!-- return a list of legal issue owners. --&amp;gt;
&amp;lt;select id="legalOwners" resultClass="string"&amp;gt;
SELECT DISTINCT usr_full_name FROM eventum_user
&amp;lt;/select&amp;gt;
&amp;lt;!-- return a list of legal products. --&amp;gt;
&amp;lt;select id="legalProducts" resultClass="string"&amp;gt;
SELECT DISTINCT prj_title FROM eventum_project
&amp;lt;/select&amp;gt;
&amp;lt;!-- return a list of legal issue status values. --&amp;gt;
&amp;lt;select id="legalIssueStatus" resultClass="string"&amp;gt;
SELECT DISTINCT sta_title FROM eventum_status
&amp;lt;/select&amp;gt;
&amp;lt;!-- return a legal list of priority values.
Note that in Mylyn these all need to be mapped to one of
"P1", "P2", "P3", "P4" or "P5". --&amp;gt;
&amp;lt;select id="legalPriority" resultClass="string"&amp;gt;
SELECT DISTINCT concat('P',pri_rank) FROM eventum_project_priority
&amp;lt;/select&amp;gt;
&amp;lt;!-- this query will be executed when pressing the Validate Connection in
the Repository Settings dialog --&amp;gt;
&amp;lt;statement id="validate" resultClass="boolean"&amp;gt;SELECT TRUE &amp;lt;/statement&amp;gt;
&amp;lt;!-- this query will be executed when pressing the Validate Connection in
the Repository Settings dialog --&amp;gt;
&amp;lt;statement id="authenticate" resultClass="boolean"&amp;gt;
SELECT TRUE
&amp;lt;/statement&amp;gt;
&amp;lt;!-- This query will be executed when validation fails and the repository
can be initialized or updated based on version (like local Derby) --&amp;gt;
&amp;lt;statement id="initialize" resultClass="string" parameterClass="string"&amp;gt;
$value$
&amp;lt;/statement&amp;gt;
&amp;lt;/sqlMap&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
This will give us a nice prefilled dialog in of the &lt;em&gt;Form Based Query&lt;/em&gt;:&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTU4HSnW7I/AAAAAAAAF9g/E3uz-Y2jZjU/s1600-h/eventum-form-based-query.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 260px;" src="http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTU4HSnW7I/AAAAAAAAF9g/E3uz-Y2jZjU/s320/eventum-form-based-query.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5378657915482102706" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Creating the Connector: step 3 mapping the task&lt;/h4&gt;&lt;br /&gt;
Open the file &lt;code&gt;maps/eventum-direct-db/TaskMapEventum.xml&lt;/code&gt; and locate the query &lt;code&gt;getForKey&lt;/code&gt;. This query retrieves all mappable issue attributes give an issue ID to use as key.&lt;br /&gt;
&lt;pre class="brush: xml; highlight: [12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd" &amp;gt;
&amp;lt;!-- 
licensed under ECL, to connect Mylyn to SQL databases
Copyright 2009 Maarten Meijer, all right reserved.
http://eclipsophy.blogger.com
--&amp;gt; 
&amp;lt;sqlMap namespace="Tasks"&amp;gt;

&amp;lt;select id="getForKey" resultClass="ibatisTask"&amp;gt;
SELECT
iss_id as taskId,
concat('P',pri_rank) AS priority,
usr_full_name AS owner,
iss_summary AS summary,
iss_description as notes,
prj_title AS product,
sta_title AS issueStatus,
iss_created_date AS creationDate,
iss_closed_date AS completionDateDate,
iss_expected_resolution_date AS dueDateDate
FROM eventum_issue
INNER JOIN eventum_issue_user ON isu_iss_id = iss_id 
INNER JOIN eventum_user ON isu_usr_id = usr_id 
INNER JOIN eventum_project ON iss_prj_id = prj_id 
INNER JOIN eventum_status ON iss_sta_id = sta_id 
INNER JOIN eventum_project_priority ON iss_pri_id = pri_id 
WHERE iss_id LIKE #value#
&amp;lt;/select&amp;gt;
[...]
&amp;lt;/sqlMap&amp;gt;
&lt;/pre&gt;&lt;h4&gt;Creating the Connector: step 4 adding dynamic search&lt;/h4&gt;&lt;br /&gt;
We also need to edit the statement in &lt;code&gt;searchForKey&lt;/code&gt; for the Form Based Query to make its selection:&lt;br /&gt;
&lt;pre class="brush: xml; highlight: [13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28, 29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49, 50,51,52]"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd" &amp;gt;
&amp;lt;!-- 
licensed under ECL, to connect Mylyn to SQL databases
Copyright 2009 Maarten Meijer, all right reserved.
http://eclipsophy.blogger.com

--&amp;gt; 
&amp;lt;sqlMap namespace="Tasks"&amp;gt;
[...]
&amp;lt;select id="searchForKey" parameterClass="ibatisCriteria" resultClass="string"&amp;gt;
SELECT DISTINCT iss_id as taskId FROM eventum_issue
&amp;lt;dynamic&amp;gt; 
&amp;lt;isNotEmpty property="product"&amp;gt;
INNER JOIN eventum_project  ON iss_prj_id = prj_id
&amp;lt;/isNotEmpty&amp;gt;
&amp;lt;isNotEmpty property="priority"&amp;gt;
INNER JOIN eventum_project_priority ON iss_pri_id = pri_id
&amp;lt;/isNotEmpty&amp;gt;
&amp;lt;isNotEmpty property="issueStatus"&amp;gt;
INNER JOIN eventum_status  ON iss_sta_id = sta_id
&amp;lt;/isNotEmpty&amp;gt;
&amp;lt;/dynamic&amp;gt;
&amp;lt;dynamic prepend="WHERE"&amp;gt;
&amp;lt;isNotEmpty property="summary" prepend="AND"
removeFirstPrepend="true"&amp;gt; iss_summary LIKE '%$summary$%'
&amp;lt;/isNotEmpty&amp;gt;
&amp;lt;isNotEmpty property="creationDateBefore" prepend="AND"
removeFirstPrepend="true"&amp;gt; iss_created_date &amp;lt;= #creationDateBefore#
&amp;lt;/isNotEmpty&amp;gt;
&amp;lt;isNotEmpty property="creationDateAfter" prepend="AND"
removeFirstPrepend="true"&amp;gt; iss_created_date gt;= #creationDateBefore#
&amp;lt;/isNotEmpty&amp;gt;
&amp;lt;isNotEmpty property="product"&amp;gt;
&amp;lt;iterate property="product" conjunction="OR" open="(" close=")"
prepend="AND" removeFirstPrepend="true"&amp;gt;
prj_title = #product[]#&amp;lt;/iterate&amp;gt;
&amp;lt;/isNotEmpty&amp;gt;
&amp;lt;isNotEmpty property="priority"&amp;gt;
&amp;lt;iterate property="priority" conjunction="OR" open="(" close=")"
prepend="AND" removeFirstPrepend="true"&amp;gt;
pri_rank = right(#priority[]#,1)&amp;lt;/iterate&amp;gt;
&amp;lt;/isNotEmpty&amp;gt;
&amp;lt;isNotEmpty property="issueStatus"&amp;gt;
&amp;lt;iterate property="issueStatus" conjunction="OR" open="(" close=")"
prepend="AND" removeFirstPrepend="true"&amp;gt;
sta_title = #issueStatus[]# &amp;lt;/iterate&amp;gt;
&amp;lt;/isNotEmpty&amp;gt;
&amp;lt;/dynamic&amp;gt;        
&amp;lt;/select&amp;gt;
[...]
&amp;lt;/sqlMap&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
Using the &lt;code&gt;&amp;lt;dynamic&amp;gt;&lt;/code&gt; tag in the SqlMaps query language, you can specify fully dynamic queries, that will do this:&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTk5mNBG8I/AAAAAAAAF9s/Qk3YDDlDOWg/s1600-h/eventum-form-based-query-dynamic.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 290px;" src="http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTk5mNBG8I/AAAAAAAAF9s/Qk3YDDlDOWg/s320/eventum-form-based-query-dynamic.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5378675533146037186" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Creating the Connector: step 5 adding comments&lt;/h4&gt;&lt;br /&gt;
When we have the basic task and attributes, we will not notice all activity that happens around a task. A Task or Issue usually has some sort of history associated with it, and this can be done by editing the file &lt;code&gt;maps/eventum-direct-db/CommentsMapEventum.xml&lt;/code&gt; as follows:&lt;br /&gt;
&lt;pre class="brush: xml; highlight: [21,22,23,24,25,26,27,28, 29,30,31,32]"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd" &amp;gt;
&amp;lt;!-- 
licensed under ECL, to connect Mylyn to SQL databases
Copyright 2009 Maarten Meijer, all right reserved.
http://eclipsophy.blogger.com

--&amp;gt; 
&amp;lt;sqlMap namespace="Comments"&amp;gt;
[...]
&amp;lt;!--
groupKey use : when you want Mylyn to concatenate strings in different
records into one comment you can force that to happen by giving these
strings the same groupKey.

Leaving the the groupKey set to null, will concatenate all records into
one Mylyn comment. This is counterintuitive!!
--&amp;gt;
&amp;lt;select id="getForKey"  resultClass="ibatisComment"&amp;gt;
SELECT
his_created_date as groupKey,
usr_email as author,
usr_full_name as authorName,
his_created_date as date,
his_summary as text
FROM eventum_issue_history
INNER JOIN eventum_user ON his_usr_id = usr_id
WHERE his_iss_id = #value#
ORDER BY his_id
&amp;lt;/select&amp;gt;
[...]
&amp;lt;/sqlMap&amp;gt;
&lt;/pre&gt;Note the use of &lt;code&gt;groupKey&lt;/code&gt; in the statement. This construct will force all comments from the same date to be listed into one comment. Eventum issue edits result in multiple items being entered into the history using the same timestamp. Using &lt;code&gt;groupKey&lt;/code&gt; allows you to define or alter the grouping of comments. &lt;br /&gt;
&lt;h4&gt;Creating the Connector: step 6 adding additional attributes&lt;/h4&gt;&lt;br /&gt;
Sometimes we have additional attributes that can be mapped to the Mylyn common attributes listed in &lt;code&gt;TaskAttributeMapper.java&lt;/code&gt;. Open the file &lt;code&gt;maps/eventum-direct-db/TaskMapEventum.xml&lt;/code&gt; and go to query &lt;code&gt;additionalForKey&lt;/code&gt;.&lt;br /&gt;
&lt;pre class="brush: xml; highlight: [20,21,22,23,24,25,26,27,28]"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd" &amp;gt;
&amp;lt;!-- 
licensed under ECL, to connect Mylyn to SQL databases
Copyright 2009 Maarten Meijer, all right reserved.
http://eclipsophy.blogger.com

--&amp;gt; 
&amp;lt;sqlMap namespace="Tasks"&amp;gt;
[...]
&amp;lt;!--
Keys for TaskData attributes used by Mylyn in the RepositoryTaskData structure

listed in file /org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/data/TaskAttributeMapper.java

There is a problem in ibatis where dot notation fields returned in a Map are parsed as bean properties.
--&amp;gt;
&amp;lt;select id="additionalForKey" resultClass="java.util.HashMap"&amp;gt;
SELECT
res_title as task_common_resolution,
usr_full_name as task_common_user_reporter
FROM eventum_issue
INNER JOIN eventum_resolution ON res_id = iss_res_id 
INNER JOIN eventum_user ON usr_id = iss_usr_id 
WHERE iss_id LIKE #value#
&amp;lt;/select&amp;gt;
[...]
&amp;lt;/sqlMap&amp;gt;&lt;/pre&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;&lt;br /&gt;
By following the simple steps outlined above, it is very easy to create a read-only connector to any database backed issue tracker. The Tasks in Mylyn are filled using a direct mapping of database columns to task elements and is not very complicated. Not a single line of Java code was needed! There is a usable UI to queries, and the results are displayed in the Task Editor, allowing a local context to be attached to it.&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_j0a2Zacz7c0/SqTri-IrVRI/AAAAAAAAF90/NQ9EHtbL1KM/s1600-h/eventum-task-in-editor.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 286px; height: 320px;" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/SqTri-IrVRI/AAAAAAAAF90/NQ9EHtbL1KM/s320/eventum-task-in-editor.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5378682841014686994" /&gt;&lt;/a&gt;&lt;br /&gt;
Connecting to database is easy when it is on the same LAN, slightly more involved when it is remote. My experience using a SSH tunnels using Putty (under Windows) or similar is that it can make a relatively secure connection easy to setup.&lt;br /&gt;
The connector fragment including source project can be downloaded in a ZIP from &lt;a href="http://industrial-mylyn.eclipselabs.org.codespot.com/files/industrial-eventum-0.2.0.zip"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-6283811247034822539?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6wpHh-6AJ81sMDSmO5ywAXH0gEY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6wpHh-6AJ81sMDSmO5ywAXH0gEY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6wpHh-6AJ81sMDSmO5ywAXH0gEY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6wpHh-6AJ81sMDSmO5ywAXH0gEY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/n2N926GTf_I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/6283811247034822539/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2009/09/industrial-sql-connector-and-eventum.html#comment-form" title="3 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/6283811247034822539?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/6283811247034822539?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/n2N926GTf_I/industrial-sql-connector-and-eventum.html" title="Industrial SQL Connector and Eventum" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_j0a2Zacz7c0/SqTCSL_ZS2I/AAAAAAAAF8g/SxxSl4aXuOY/s72-c/industrial-install.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2009/09/industrial-sql-connector-and-eventum.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEMQncyeip7ImA9Wx9bE0o.&quot;"><id>tag:blogger.com,1999:blog-8878360187292205236.post-6785913037209843729</id><published>2009-09-03T18:36:00.007+02:00</published><updated>2011-02-22T12:04:43.992+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-22T12:04:43.992+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sql" /><category scheme="http://www.blogger.com/atom/ns#" term="industrial" /><category scheme="http://www.blogger.com/atom/ns#" term="ibatis" /><category scheme="http://www.blogger.com/atom/ns#" term="Mylyn" /><category scheme="http://www.blogger.com/atom/ns#" term="connector" /><category scheme="http://www.blogger.com/atom/ns#" term="eventum" /><title>Industrial SQL Connector versatility</title><content type="html">I just created a quick solution for &lt;a href="https://bugs.eclipse.org/150174"&gt;https://bugs.eclipse.org/150174&lt;/a&gt; Eventum Mylyn connector using the Industrial SQL Mylyn connector  toolkit in under 60 minutes! Screenshots @ bug, details to follow here.&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_j0a2Zacz7c0/SqAb65TxEkI/AAAAAAAAF7s/JCXpt2NQIUg/s1600-h/eventum-repository-validated.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 311px;" src="http://3.bp.blogspot.com/_j0a2Zacz7c0/SqAb65TxEkI/AAAAAAAAF7s/JCXpt2NQIUg/s320/eventum-repository-validated.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5377328653710463554" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_j0a2Zacz7c0/SqAb6ao30lI/AAAAAAAAF7k/-1DFc-4UdbM/s1600-h/eventum-repository-entered.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 311px;" src="http://3.bp.blogspot.com/_j0a2Zacz7c0/SqAb6ao30lI/AAAAAAAAF7k/-1DFc-4UdbM/s320/eventum-repository-entered.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5377328645477487186" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_j0a2Zacz7c0/SqAb6FsqsqI/AAAAAAAAF7c/fsKaUvwd7n0/s1600-h/eventum-form-based-query.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 260px;" src="http://1.bp.blogspot.com/_j0a2Zacz7c0/SqAb6FsqsqI/AAAAAAAAF7c/fsKaUvwd7n0/s320/eventum-form-based-query.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5377328639856259746" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_j0a2Zacz7c0/SqAb7I0o4-I/AAAAAAAAF70/ZDhSfqOxQcQ/s1600-h/eventum-tasklist-empty.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 155px;" src="http://3.bp.blogspot.com/_j0a2Zacz7c0/SqAb7I0o4-I/AAAAAAAAF70/ZDhSfqOxQcQ/s320/eventum-tasklist-empty.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5377328657874871266" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
A ZIP with basic code is available &lt;a href="http://industrial-mylyn.eclipselabs.org.codespot.com/files/industrial-eventum-0.1.0.zip"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8878360187292205236-6785913037209843729?l=eclipsophy.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YITp9iFNq5DMbgku42kE3bZWM4A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YITp9iFNq5DMbgku42kE3bZWM4A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YITp9iFNq5DMbgku42kE3bZWM4A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YITp9iFNq5DMbgku42kE3bZWM4A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Eclipsophy/~4/AnZEsMiJFHw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://eclipsophy.blogspot.com/feeds/6785913037209843729/comments/default" title="Reacties plaatsen" /><link rel="replies" type="text/html" href="http://eclipsophy.blogspot.com/2009/09/industrial-sql-connector-versatility.html#comment-form" title="0 reacties" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/6785913037209843729?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8878360187292205236/posts/default/6785913037209843729?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Eclipsophy/~3/AnZEsMiJFHw/industrial-sql-connector-versatility.html" title="Industrial SQL Connector versatility" /><author><name>Maarten Meijer</name><uri>https://profiles.google.com/110218561793048713416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-CyL0xayne8A/AAAAAAAAAAI/AAAAAAAAJOU/Ym_y2yeGt5w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_j0a2Zacz7c0/SqAb65TxEkI/AAAAAAAAF7s/JCXpt2NQIUg/s72-c/eventum-repository-validated.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://eclipsophy.blogspot.com/2009/09/industrial-sql-connector-versatility.html</feedburner:origLink></entry></feed>

