Skip to content
david-maier-at-sones edited this page Feb 1, 2011 · 42 revisions

Welcome

Preamble

The "sones Web Admin Tools" project is an Open Source project. The associated source code is licensed under AGPL. The purpose of the project is:

  1. The development of a framework for administrative tools for the "sones Graph DB" database management system.
  2. The development of small flexible tools those can interact with associated web services on side of the "sones Graph DB"

Contact

You are welcome to contribute to this project! Please contact david.maier@sones.de to get involved or send an email to the mailing list: sones.WebAdminTools@groups.facebook.com .

Requirements

Informal description of the functional requirements

  • Framework
- An extensible container which allows to run tools with a dedicated purpose - Regarding the word 'Portlet' let us name such a tool 'Toolslet' and the container 'ToolsletContainer'
- A Web GUI which allows to start such a tool
- The 'frame' to access server side functionality via HTTP (basic Web Service access)
  • Tooling
- Tools for managing the GraphDB's 'Services', the 'Vertex Types', the 'Users', the 'Configuration' and to monitor the 'Performance'
- Each tool gets provides a server side web service and just acts like a client for this service

Note: We will document the requirements of the several 'Toolslets' seperately.

Non-functional requirements

  • 'Toolslets' should run completely platform independent in any Web Browser
  • No additional heavy weighted runtime (Java, .Net) should be required
  • The development should happen with an object oriented programming language

Design overview

design_idea.png

First GUI prototype

Some screen shots are available here:

container_prototype1.png

container_prototype2.png

Implementation notes

Regarding the Non-functional requirements, we finally decided to use the G(oogle) W(eb) T(oolkit) to realize this project. This is because we want to have a Java Script program but we do not want to program everything in Java Script. Especially the extension 'SmartGWT' comes with a lot of ready to use Widgets.

--Note: I am using the GWT plug-in for Eclipse for development purposes.

The class "AdminToolsletContainer" is the Entry Point of our GWT project. The method "addToolslets" of it must be extended to add new Toolslets. Because GWT generates Java Script code from Java code it's hard to imagine "hot deployment" of Toolslets. Something like a code rewriting preprocessor could help to realize this feature in later versions. For now we just can add "this.toolslets.add(new VertexTypesToolslet());" to the "addToolslets" method in order to have a new Toolslet available. A Toolslet should be derived from the abstract class "Toolslet". It has the "public Toolslet(String name, String iconName)" constructor and E.G. "public Shortcut getShortcut()" method. So the passed iconName will result in the creation of an instance of the "Shortcut" class. However, you do not need to use the "getShortcut()" method by yourself. The "AdminToolsletContainer" just uses it to provide you access to your Toolslet. If you look at the "VertexTypesToolslet" then you can see that it calls the "Toolslet" constructor in the following way: "super("Vertex types", "Vertex.png");". Regarding the conventions from GWT, each such a Toolslet has an "onLoad" method. This method is used to fill your Toolslet with content. To do so it's required to add the content to Toolslet's mainCanvas E.G.: this.mainCanvas.addChild(tabSet); . Maybe you do not like the idea to add all the GUI stuff in one method, and then you would be absolutely right. The way is more to implement your GUI stuff on top of another Widget/Canvas and later call just this.mainCanvas.addChild(myCanvasFromDedicatedToolsletPackage) in the onLoad() method.

Licenses

This project is developed under AGPLv3. The license file is available here: sones Web Admin Tools license

This project uses third party libraries. The following list refers to the their licenses:


-- david-maier-at-sones