IP Log Tool Update
Join the DZone community and get the full member experience.Join For Free
I’ve been working on a new version of the IP Log tool. This version leverages some pretty cool Eclipse technology.
The first thing you see when you use the tool is the wizard. The wizard can populate a new IP Log with information gathered from the various Eclipse Foundation databases. As you can see from the screenshot, the user is presented with a hierarchical list of all Eclipse projects (the list itself is pretty impressive).
Here, I’ve selected the eRCP project from the Eclipse RT top-level project. When the user clicks “Finish”, the wizard makes a call out to a web service running at the Eclipse Foundation to gather all the necessary information. The results, which are saved in a file in the workspace, are displayed in the editor.
Many readers will recognize that this this editor has been generated using EMF. With almost no work, the editor is completely functional (with help from the Properties view). I’ve fiddled a little with what was generated. I’ve created a couple of icons, changed the way that some of the objects are labeled, and that sort of thing. You can also see some evidence of a custom “Committers” page that uses JFace Databinding, I’ve started poking at. I envision eventually having a page for each part of the IP Log (committers, third-party contributions, contributors and their contributions, etc.) with the “Selection” page or something like it relegated to the back of the editor’s page stack.
I think that some customized pages will make it easier to use. In the meantime, it’s very cool that EMF has generated a fully functional editor.
One of the bigger challenges of maintaining an IP Log is keeping it up to date. This is where EMF Compare comes swinging in to the rescue. With EMF Compare, I’ve added the ability to compare what is captured in the log against the information found in the Eclipse databases, and selectively update the log with those changes. The best part is that I’ve been able to just reuse the same web service that I used to do the initial population of the log. No, scratch that, the best part is that I’ve been able to implement this compare and update functionality with a couple dozen lines of code.
Here’s what the compare editor looks like after I made a few changes to the initial log:
Right now the compare and update works directly out of the editor. Eventually, you’ll be able to do the compare without even opening the log (I’m not sure how useful this will be, but it’s only a few lines of code). Note the “Copy current change from right to left” icon, , above the “Eclipse Foundation Databases” panel that users can employ to make updates to their log. I’ve disabled the functionality that permits movement from left to right: at least for now, Eclipse Foundation Databases cannot be updated using this tool.
There is still much work to do, but I am encouraged by the fact that it’s already useful. I’ll be demonstrating the tool at Eclipse Summit Europe 2009. Assuming that the poster session I proposed, “The Eclipse Development Process“, is accepted, I’ll be showing the tool there. That failing, I’ll just demonstrate it to anybody who will listen. My intent is to contribute it to Dash after the summit.
I’d like your feedback on the concept and, of course, the implementation. Personally, I think the idea of tools for committers built using Eclipse Technology, run within an Eclipse environment, is brilliant. I hope you do as well.
For the curious: The data returned from the web service is in XML format. I created an XML Schema that I used to generate the EMF model. I used standard EMF tools to generate the editor. For the time-being, this tool assumes that the log will be stored in XML format somewhere in the project’s “web” CVS where it can be easily retrieved. At some point, we’ll need to make an XSD that translates the log into a more human-friendly HTML form.
My hope is that I’ll be overwhelmed with your input and that we’ll be able to turn this into a useful tool.
Opinions expressed by DZone contributors are their own.