User: fs Date: 2006/11/28 01:37:18 Added: dba/www/development/index.html dba/www/development/projects.html dba/www/development/project_structure.html
Log: dedicated Development section File Changes: Directory: /dba/www/development/ ================================ File [added]: index.html Url: http://dba.openoffice.org/source/browse/dba/www/development/index.html?rev=1.1&content-type=text/vnd.viewcvs-markup Added lines: 37 --------------- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <meta http-equiv="Content-Style-Type" content="text/css" /> <style type="text/css">@import url("/css/dba.css");</style> <title>OpenOffice.org Base - Miscellaneous</title> <script type="text/javascript" src="/js/dba_default.js"></script> </head> <body lang="en-US"> <b>Project Sections</b>: <a href="../index.html">Home</a> | <a href="../specifications/index.html">Specifications</a> | <a href="../QA/index.html">QA</a> | <a href="./index.html"><b>Development</b></a> | <a href="../drivers/index.html">Drivers</a><br/> <b>Development Sections</b>: <a href="./projects.html">Developer Projects</a> | <a href="./project_structure.html">Project Structure</a> <div class="dba"> <h1 id="dba_misc">OpenOffice.org Base - Development</h1> <table cellpadding="0" cellspacing="0" ID="Table1"> <tbody> <tr class="OddTableRow"> <td style="vertical-align: top; width: 200px;"><a href="projects.html">Developer projects</a></td> <td style="vertical-align: top;">You're a developer, and you want to help? Look here for a list of (most self-contained) projects ....</td> </tr> <tr class="EvenTableRow"> <td style="vertical-align: top; width: 200px;"><a href="project_structure.html">Project Structure</a></td> <td style="vertical-align: top;">You want to poke around in the code, and don't know where to start?</td> </tr> </tbody> </table> <br> </body> </html> File [added]: projects.html Url: http://dba.openoffice.org/source/browse/dba/www/development/projects.html?rev=1.1&content-type=text/vnd.viewcvs-markup Added lines: 1063 ----------------- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> <meta content="text/css" http-equiv="Content-Style-Type"> <style type="text/css"> /* <![CDATA[ */ @import url("/css/dba.css"); .left_align { text-align:left; } .centered { text-align:center; !important; } /* ]]> */ </style> <title>Developer projects</title> <script type="text/javascript" src="/js/dba_default.js"></script> </head> <body> <b>Project Sections</b>: <a href="../index.html">Home</a> | <a href="../specifications/index.html">Specifications</a> | <a href="../QA/index.html">QA</a> | <a href="./index.html"><b>Development</b></a> | <a href="../drivers/index.html">Drivers</a><br/> <b>Development Sections</b>: <a href="../development/projects.html"><b>Developer Projects</b></a> | <a href="./project_structure.html">Project Structure</a> <hr/> <div class="dba"> <h1 id="dba_dev_projects">Developer Projects</h1> <p>Below is a list of projects which could be implemented by developers from the community. Most of these projects are relatively self-contained, and do not require too much knowledge about OOo's code infrastructure (well, this definately doesn't hold for the report generator, which is listed here for the most ambitious people only :).</p> <p>Note that this list doesn't claim to be a complete repository of what will be done in the near/medium future. There may be items on the list which will never be realized, and there definately are items which are not on the list, but will be implemented.</p> <p>If you are interested in anything from the list, please speak at <a href="mailto:[email protected]"> [email protected]</a>. We'll gladly help you to get started on this.</p> <p>Also, make sure you don't miss <a href="http://development.openoffice.org/todo.html">OpenOffice.org's global TODO list</a>, which also contains interesting projects for developers.</p> <p>Here is what you'll find below: <ul> <li> <a href="#record_locking">Support for record locking</a></li> <li> <a href="#embed_sqlite">Embed SQLite into OOo database files</a></li> <li> <a href="#user_admin">User administration</a></li> <li> <a href="#auto_size">Auto-sizing for form controls</a></li> <li> <a href="#dbase_joins">Joins in dBase queries</a></li> <li> <a href="#new_filter">New Filter Dialog</a></li> <li> <a href="#ldap">SDBC driver for LDAP directories</a></li> <li> <a href="#vcards">SDBC driver for vCards</a></li> <li> <a href="#report_generator">Report Generator</a></li> <li> <a href="#form_controls">New/Enhanced Form Controls</a></li> <li> <a href="#form_dialogs">Dialogs with Form Functionality</a></li> <li> <a href="#execute_sql">Re-design the execute-SQL dialog</a></li> <li> <a href="#cross_access">native, cross-platform access to MS Access databases</a></li> </ul></p> <h3>General Notes</h3> <p>Whenever we talk about user interface work, this implies working with VCL, the Visual Class Library in OpenOffice.org. If you are not familar with it, you will curse it, since especially some of the older parts never heard the word "documentation". On the other hand: In opposite to the native platform controls, everything is there as source code, so if you like "learning by debugging", you will love VCL <img src="../images/smile.gif" alt="smile" style="width: 19px; height: 19px;">.</p> <p>Additionally, be aware of the fact that feature implementations in OpenOffice.org require a specification (you may visit <a href="http://specs.openoffice.org"> the specifications project</a> for more information). There's a rule that nothing is checked into the master branch which doesn't have a specification which all stakeholders agreed upon - so unlike other open source projects you may know, the specification really is an important part. Stakeholders are: the documentation team, the user experience team, the quality assurance team, and development. Usually, one representative from every team needs to accept your specification.</p> <p>Well, don't let this hinder you in starting. Just be aware that there will be a time when a specification is finally needed. Most developers don't like writing such documents (and some people even claim that <a href="http://www.joelonsoftware.com/articles/fog0000000034.html">they shouldn't</a>). Thus, you need to clarify who will take this for you, if you can't/don't want.</p> <p>A note about the effort: This is a rather rough guess at the moment. In general, it may be a good idea to add two or more weeks or so simply for becoming familar with the code and some concepts, so if it is "2 weeks", don't expect to start today and finish it in 14 days ...</p> <!-- ========================== --> <!-- Support for record locking --> <h3><a name="record_locking"></a>Support for record locking</h3> <h4>description</h4> <p>If you're working in a multi-user environment, and don't have a full-blown client-server database at hand, then concurrent access with <em>record locking</em> is a useful concept: While all users/clients have write access to your data (say, a dBase file), a certain record is locked as long as a user edits this record. This prevents two users from making simultaneous changes to the same record.</p> <p>OpenOffice.org itself does currently not support record locking at all: There's neither support in the API<sup><a href="#ref_1">1</a></sup>, the core implementations (the database drivers), nor the user interface (which would need to respect and use the API).</p> <p>To change this, one would need to <ul><li>define an SDBCX-API for record locking</li> <li>implement this API for at least one database driver (the ADO bridge may be a good candidate, since it only would need to forward the locking to the ADO API)</li> <li>teach some high-level implementations (such as the <a href="http://api.openoffice.org/docs/common/ref/com/sun/star/sdb/RowSet.html">RowSet</a>) to respect this API, if it is present</li> </ul></p> <p>Once this is done, it might even be interesting to enhance OpenOffice.org's dBase implementation, so that it also supports record locking, and thus multi-user access. This would open interesting new use cases for dBase databases in OpenOffice.org.<br/> Currently, there is no low-level API for file-locking in OSL (which is OpenOffice.org's abstraction layer for things like file access), but chances are good that it will be implemented towards 2.0. When it is available, record-locking for dBase files will at least be technically possible...</p> <table style="text-align: left; width: 100%;" cellspacing="0" cellpadding="2"> <tbody> <tr> <td style="vertical-align: top; width:20%;" class="centered"> <b>required skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>recommended skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>estimated effort</b> </td> <td style="vertical-align: top;" class="centered"> <b>difficulty</b> </td> </tr> <tr> <td style="vertical-align: top; width:20%;"> <ul> <li>C++</li> <li>familarity with UNO</li> </ul> </td> <td style="vertical-align: top;"> <ul> <li> knowledge about existing locking APIs</li> </ul> </td> <td style="vertical-align: middle; text-align: center;">3 weeks</td> <td style="vertical-align: middle; text-align: center;">medium</td> </tr> </tbody> </table> <p><a name="ref_1"></a><b><sup>1</sup></b> See the IDL reference for <a href="http://api.openoffice.org/docs/common/ref/com/sun/star/sdbc/module-ix.html">SDBC</a> and <a href="http://api.openoffice.org/docs/common/ref/com/sun/star/sdbcx/module-ix.html">SDBCX</a>, and the <a href="http://api.openoffice.org/DevelopersGuide/DevelopersGuide.html">Developer's Guide</a>, especially chapter 12 titled "Database Access"</p> <div style="text-align: right;"><a href="http://www.openoffice.org">OpenOffice.org</a> - <a href="http://dba.openoffice.org/index.html">Database Access</a> - <a href="index.html"> Miscellaneous</a> - <a href="development/projects.html">Developer Projects</a><br/> </div> <hr style="width: 100%; height: 2px;"> <!-- =================================== --> <!-- Embed SQLite into OOo database files--> <h3><a name="embed_sqlite"></a>Embed SQLite into OOo database files</h3> <h4>description</h4> <p>With OpenOffice.org 2.0, we will feature database files which contain nearly everything associated with a desktop database: forms, reports, queries, UI layout information ... whatever. This will, at least, allow you easy exchange of those database-related information with other people (or only installations).</p> <p>What we probably still won't have is the actual <em>data</em> embedded into the file: You still only can access external databases, be it the dBase files on your disc, or some Oracle/PostgreSQL/MySQL database running on some server.</p> <p>Now, if this last step - embedding the data into the file - could be accomplished, then OpenOffice.org would, for the first time, allow for completely self-contained databases. This would be the ultimate "copy and go"-feature, as known from a certain other office suite: You could simply take a single file, containing, say, your video collection database, and give it to a friend.</p> <p>It does certainly not make sense for the OpenOffice.org project to create yet another database backend format - there are enough of those out there, addressing various needs.<br/> However, what <em>does</em> make sense is to use another open source database which is able to store its data in the local file system, and adjust it to our needs, so that the data is "rerouted" to our own database files.</p> <p>There are at least two databases which could serve here, namely <a href="http://hsqldb.sourceforge.net/">HSQLDB</a> and <a href="http://www.sqlite.org/">SQLite</a>. (You could argue which of the two would fit better, but please, this definately is not in the scope of this text!)</p> <p>The task here is to <ul><li>modify the SQLite sources, so that every file system access is done via an abstraction layer<br/> This modification should be in a shape that it can be contributed back to the SQLite project. This way, OOo would automatically benefit from any new implementations in SQLite, as people could simply download the latest versions.</li> <li>embed SQLite into OOo, by writing a dedicated <a href="http://api.openoffice.org/docs/common/ref/com/sun/star/sdbc/module-ix.html">SDBC</a> driver, which implements the aforementioned abstraction layer, causing SQLite to read/write its data from/to OOo's database storage</li> <li>adjust the UI, which provides the user with the (defaulted?) choice to create self-contained database files, using the SQLite engine</li> <li>do some more knitting, e.g. ensure that the SQLite engine is installed together with OOo</li> </ul> </p> <p>Towards 2.0, we hope to prepare the OOo codebase for this. Means, that we will provide a possibility to deploy "embedding engines" in an existing OpenOffice.org installation. This leaves us with the option to realize this project even if it does not hit the 2.0 time line.</p> <p>Note(1): If you go for this, you may find the <a href="http://www.ch-werner.de/sqliteodbc/">ODBC driver implementation for SQLite</a> useful to learn from.<br/> Note(2): You are already able to <a href="http://documentation.openoffice.org/HOW_TO/">access SQLite databases</a> with today's OOo.</p> <br/> <table style="text-align: left; width: 100%;" cellspacing="0" cellpadding="2"> <tbody> <tr> <td style="vertical-align: top; width:20%;" class="centered"> <b>required skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>recommended skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>estimated effort</b> </td> <td style="vertical-align: top;" class="centered"> <b>difficulty</b> </td> </tr> <tr class="left_align"> <td style="vertical-align: top; width:20%;"> <ul> <li>C++</li> <li>familarity with <a href="http://udk.openoffice.org/">UNO</a>, OOo's component model</li> </ul> </td> <td style="vertical-align: top;"> <ul> <li>knowledge about OOo's database access API (<a href="http://api.openoffice.org/docs/common/ref/com/sun/star/sdbc/module-ix.html">SDBC</a>)</li> <li>knowledge about OOo's storage API (which is too brand new to have a documentation online <img src="../images/smile.gif" alt="smile" style="width: 19px; height: 19px;">) <li>knowledge about SQLite's code base and API</li> </ul> </td> <td style="vertical-align: middle; text-align: center;">4 weeks on OOo side<br/>unknown on SQLite side</td> <td style="vertical-align: middle; text-align: center;">medium<br/> </td> </tr> </tbody> </table> <br/> <div style="text-align: right;"><a href="http://www.openoffice.org">OpenOffice.org</a> - <a href="http://dba.openoffice.org/index.html">Database Access</a> - <a href="index.html"> Miscellaneous</a> - <a href="development/projects.html">Developer Projects</a><br/> </div> <hr style="width: 100%; height: 2px;"> <!-- =================== --> <!-- User administration --> <h3><a name="user_admin"></a>User administration</h3> <h4>description</h4> <p>Client-server databases usually support a privilege system: Different users (who need to authenticate on login) are granted different privileges for different actions on different objects. At least, actions on tables (such as insert/update/delete) can usually be granted on a per-user basis.</p> <p>OpenOffice.org has an API for user and privilege administration, but it is rarely implemented in today's SDBC drivers. The task of this item is to define and implement a user interface for user administration, which is generic enough to cover different database types, and to implement this UI.</p> <table style="text-align: left; width: 100%;" cellspacing="0" cellpadding="2"> <tbody> <tr> <td style="vertical-align: top; width:20%;" class="centered"> <b>required skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>recommended skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>estimated effort</b> </td> <td style="vertical-align: top;" class="centered"> <b>difficulty</b> </td> </tr> <tr class="left_align"> <td style="vertical-align: top; width:20%;"> <ul> <li>C++</li> <li>familarity with UNO</li> </ul> </td> <td style="vertical-align: top;"> <ul> <li>knowledge about OOo's database access API</li> <li>familarity with the VCL, OOo's graphics toolkit</li> </ul> </td> <td style="vertical-align: middle; text-align: center;">4 weeks</td> <td style="vertical-align: middle; text-align: center;">medium<br/> </td> </tr> </tbody> </table> <br/> <div style="text-align: right;"><a href="http://www.openoffice.org">OpenOffice.org</a> - <a href="http://dba.openoffice.org/index.html">Database Access</a> - <a href="index.html"> Miscellaneous</a> - <a href="development/projects.html">Developer Projects</a><br/> </div> <hr style="width: 100%; height: 2px;"> <!-- ============================= --> <!-- Auto-sizing for form controls --> <h3><a name="auto_size"></a>Auto-sizing for form controls</h3> <h4>description</h4> <p>Form controls, when inserted into a host document (such as a text document) currently are unable to resize themself depending on their content.<br/> You could imagine a boolean property at a form control such as a text field, which would cause the field to automatically resize as soon as it's text changes. When you then anchor such a control as character, this would be of quite some use when creating documents which mix text and form elements.</p> <p>Implementing this would mean to <ul><li>provide such a property at the respective control model's implementations</li> <li>provide a broadcaster mechanism at the respective controls, which notifies changes in its preferred size</li> <li>implement a listener mechanism in the form runtime environment, which actually resizes the controls (more precise: the shapes to which the respective controls are bound) when they express the need to do so.</li> </ul></p> <table style="text-align: left; width: 100%;" cellspacing="0" cellpadding="2"> <tbody> <tr> <td style="vertical-align: top; width:20%;" class="centered"> <b>required skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>recommended skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>estimated effort</b> </td> <td style="vertical-align: top;" class="centered"> <b>difficulty</b> </td> </tr> <tr class="left_align"> <td style="vertical-align: top; width:20%;"> <ul> <li>C++</li> <li>familarity with UNO</li> </ul> </td> <td style="vertical-align: top;"> <ul> <li>knowledge about OOo's form API</li> <li>familarity with OOo's toolkit API (module com.sun.star.awt)</li> </ul> </td> <td style="vertical-align: middle; width: 30%; text-align: center;">3 weeks</td> <td style="vertical-align: middle; text-align: center;">medium<br/> </td> </tr> </tbody> </table> <br/> <div style="text-align: right;"><a href="http://www.openoffice.org">OpenOffice.org</a> - <a href="http://dba.openoffice.org/index.html">Database Access</a> - <a href="index.html"> Miscellaneous</a> - <a href="development/projects.html">Developer Projects</a><br/> </div> <hr style="width: 100%; height: 2px;"> <!-- ====================== --> <!-- Joins in dBase queries --> <h3><a name="dbase_joins"></a>Joins in dBase queries</h3> <h4>description</h4> <p>Our own dBase implementation (actually: the <a href="http://api.openoffice.org/docs/common/ref/com/sun/star/sdbc/module-ix.html"> SDBC</a> driver which allows to access dBase files) is not capable of executing queries which span more than one table. This means you can do a "SELECT <field> FROM <table>", but no "SELECT <table1>.<field1>, <table2>.<field2> FROM <table1>, <table2>".</p> <p>Enhancing this would be a major step towards a dBase implementation which provides everything for low end database needs.</p> <p>This includes probably no UI , but only core implementations in the dBase driver, probably including some heavy-to-read STL stuff, so be prepared to invest some time for digging around.</p> <table style="text-align: left; width: 100%;" cellspacing="0" cellpadding="2"> <tbody> <tr class="centered"> <td style="vertical-align: top; width:20%;" class="centered"> <b>required skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>recommended skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>estimated effort</b> </td> <td style="vertical-align: top;" class="centered"> <b>difficulty</b> </td> </tr> <tr> <td style="vertical-align: top; width:20%;"> <ul> <li>C++</li> <li>some SQL knowledge<br/> </li> </ul> </td> <td style="vertical-align: top;"> <ul> <li> Lexx and Yacc<br/> </li> </ul> </td> <td style="vertical-align: middle; width: 30%; text-align: center;">3 weeks for an experienced developer</td> <td style="vertical-align: middle; text-align: center;">high</td> </tr> </tbody> </table> <br/> <div style="text-align: right;"><a href="http://www.openoffice.org">OpenOffice.org</a> - <a href="http://dba.openoffice.org/index.html">Database Access</a> - <a href="index.html"> Miscellaneous</a> - <a href="development/projects.html">Developer Projects</a><br/> </div> <hr style="width: 100%; height: 2px;"> <!-- ================= --> <!-- New Filter Dialog --> <h3><a name="new_filter"></a>New Filter Dialog</h3> <h4>description</h4> <p>Similar to the Sort Dialog, there is a dialog which allows to filter queries and tables – it can be reached the same way as the sort dialog, by using the "Default Filter..." button in the toolbox of the data source browser.</p> <p>This dialog suffers from some disadvantages: <ul> <li> it's not dynamic, three filter criterions are the maximum</li> <li> when opening the dialog, there is a new filter added automatically depending on the currently selected field in the table. This leads to the strange behaviour that opening the dialog and pressing <span style="font-style: italic;">OK</span> without any further user action <span style="font-style: italic;">modifies</span> the filter. We've seen users being heavily irritated by this.</li> <li> The dialog does not really clearly distinguish between ORing and ANDing filters. Though there the user can make a choice for AND or OR, it's not clear what is the result if these are <span style="font-style: italic;">mixed</span>. This UI is simply not intuitive.<br/> </li> </ul> This dialog should be re-implemented, so that it's functionality is extended and it's more intuitive. Design (before implementation) is an important part of this project.</p> <p>One other place where a similar functionality is available is the <span style="font-style: italic;">filter navigator</span> in the <span style="font-style: italic;">form based filter</span>.</p> <p>This will show the so-called filter navigator, which uses a tree view to represent the currently used filter for the form. It has other disadvantages <ul> <li> it's impossible to add a filter with two AND criterions for the same column, such as "name LIKE '%Foo%" and "name LIKE '%Bar%'".</li> <li> it's not intuitive, too (well, this is personal taste :)</li> <li> some functionality cannot be accessed from within the navigator, but only by entering text in the form fields (for instance, try creating a new filter in a form which previously does not have any filter<br/> </li> </ul></p> <p>If the interface of the new implementation of the filter control in the new filter dialog is abstract enough, then on the long term we can use it for the filter navigator, too. This would require some discipline in designing the classes for the new implementations, and some abstraction capabilities. However, this is not the primary goal of this implementaton.</p> <table style="text-align: left; width: 100%;" cellspacing="0" cellpadding="2"> <tbody> <tr class="centered"> <td style="vertical-align: top; width:20%;" class="centered"> <b>required skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>recommended skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>estimated effort</b> </td> <td style="vertical-align: top;" class="centered"> <b>difficulty</b> </td> </tr> <tr> <td style="vertical-align: top; width:20%;"> <ul> <li>C++</li> </ul> </td> <td style="vertical-align: top;"> <ul> <li> familarity with VCL (OpenOffice.org's visual toolkit)<br/> </li> </ul> </td> <td style="vertical-align: middle; width: 30%; text-align: center;">1 month for an experienced developer</td> <td style="vertical-align: middle; text-align: center;">medium-high</td> </tr> </tbody> </table> <div style="text-align: right;"> <div style="text-align: left;"><br/> </div> <a href="http://www.openoffice.org">OpenOffice.org</a> - <a href="http://dba.openoffice.org/index.html"> Database Access</a> - <a href="../development/index.html">Development</a> - <a href="../development/index.html">Development</a> </div> <hr style="width: 100%; height: 2px;"> <!-- ================================ --> <!-- SDBC driver for LDAP directories --> <h3><a name="ldap"></a>SDBC driver for LDAP directories</h3> <h4>description</h4> <p>LDAP (<b>L</b>ightweight <b>D</b>irectory <b>A</b>ccess <b>P</b>rotocol) is very often used in companies to store address data which need to be accessed by all employees. Thus, it's desrirable to access LDAP directories in OpenOffice.org, for instance for doing mail merges with it.</p> <p>OpenOffice.org already features accessing LDAP data, by shipping <a href="http://www.mozilla.org">Mozilla</a> components which enable access to LDAP servers. However, this solution has some disadvantages, the most prominent being that the broad variety of LDAP schemes (i.e. which LDAP classes and attributes are actually used to reflect the data being of interest) is not captured currently - we use a <a href="../FAQ/LDAP_field_mapping.html">fixed mapping from LDAP to an OOo table</a>, which seriously limits the use of this feature for some people/organizations.</p> <p>To enable everybody to access the LDAP data of her choice in OOo, we would need to write a dedicated SDBC driver, which "flattens" an LDAP directory to a database table (i.e. provides the data of an LDAP directory as set of rows), but would be fully customizable. This means the user can herself decide which LDAP attribute should be mapped to which "table column" in the "databases table" provided by the SDBC driver.</p> <p>The driver would probably not need to make extensive use of our own query engine. Since by design, LDAP is very strong in querying only selected data, the driver would translate SQL WHERE clauses into LDAP restrictions and let the server do the work (as it should be with any good database :).</p> <p>As a first step, such a customization would take place in the <a href="http://util.openoffice.org/common/configuration/api_spec.html">configuration</a>. As a second step, a user interface needs to be created, which allows the user to conviniently change this mapping.</p> <a>An alternative approach would be to improve the Mozilla components which are shipped with OpenOffice.org. There is a <a href="http://abzilla.mozdev.org">project dedicated to address book integration in Mozilla</a>, where this work would take place.<br/> In this approach, we would first enable Mozilla to fully customize the LDAP mapping it uses, and then ship OpenOffice.org with the new components.<br/> However, such a solution may be more laborious to administrate, since the people would need to configure both the mapping of Mozilla (i.e. how Mozilla maps LDAP fields to it's address book API), and the mapping of OpenOffice.org (i.e. how OpenOffice.org maps Mozilla address book fields to database table columns).</p> <table style="text-align: left; width: 100%;" cellspacing="0" cellpadding="2"> <tbody> <tr class="centered"> <td style="vertical-align: top; width:20%;" class="centered"> <b>required skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>recommended skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>estimated effort</b> </td> <td style="vertical-align: top;" class="centered"> <b>difficulty</b> </td> </tr> <tr> <td style="vertical-align: top; width:20%;"> <ul> <li>C++</li> <li>familarity with UNO</li> </ul> </td> <td style="vertical-align: top;"> <ul> <li> familarity with LDAP</li> <li> familarity with OOo's database access and form API<br/> </li> </ul> </td> <td style="vertical-align: middle; width: 30%; text-align: center;">2 weeks for the driver, 1 week for the customizability, 2 weeks for an user interface<br/> </td> <td style="vertical-align: middle; text-align: center;">medium<br/> </td> </tr> </tbody> </table> <div style="text-align: right;"> <a href="http://www.openoffice.org">OpenOffice.org</a> - <a href="http://dba.openoffice.org/index.html"> Database Access</a> - <a href="../development/index.html">Development</a> - <a href="../development/index.html">Development</a> </div> <hr style="width: 100%; height: 2px;"> <!-- ====================== --> <!-- SDBC driver for vCards --> <h3><a name="vcards"></a>SDBC driver for vCards</h3> <h4>description</h4> <p>OpenOffice.org has it's own open database access API called SDBC which is modeled on the architecture of Java's JDBC. SDBC supports several databases and database-like API's via an extensible provider architecture; ODBC 3.0, JDBC, ADO, dBase and CSV are among the databases and database management systems currently supported. Each SDBC provider is implemented as a UNO component.</p> <p>Itt would be slightly usefull to have a dedicated driver for accessign vCards. There is an infrastructure in the existing SDBC implementations for file-based databases, which could be relatively easily specialized for vCard access. This would broaden the range of address book data which can be used in OpenOffice.org.</p> <table style="text-align: left; width: 100%;" cellspacing="0" cellpadding="2"> <tbody> <tr class="centered"> <td style="vertical-align: top; width:20%;" class="centered"> <b>required skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>recommended skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>estimated effort</b> </td> <td style="vertical-align: top;" class="centered"> <b>difficulty</b> </td> </tr> <tr> <td style="vertical-align: top; width:20%;"> <ul> <li>C++</li> <li>familarity with UNO<br/> </li> </ul> </td> <td style="vertical-align: top;"> <ul> <li> familarity with OOo's database access and form API<br/> </li> </ul> </td> <td style="vertical-align: middle; width: 30%; text-align: center;">2 weeks</td> <td style="vertical-align: middle; text-align: center;">medium</td> </tr> </tbody> </table> <br/> <div style="text-align: right;"> <a href="http://www.openoffice.org">OpenOffice.org</a> - <a href="/index.html"> Database Access</a> - <a href="index.html"> Miscellaneous</a> - <a href="development/projects.html"> Developer Projects</a> </div> <hr style="width: 100%; height: 2px;"> <!-- ================ --> <!-- Report Generator --> <h3><a name="report_generator"></a>Report Generator</h3> <h4>description</h4> <p>A Report generator is probably the most ambitious task. At the moment, newly (re-)introduced with 1.1, we have a report auto pilot which creates a text document with a table containing data from a data source (Actually, it's a little bit more than this, as the pilot allows for e.g. report templates, too).</p> <p>We should have a fully-featured report generator, which is a report engine (which reads a document containing a report description, and out of it, generates a document containing actual data), and a report design component, which allows to create and test a report definition document. Again, the latter is probably the most expensive part.</p> <p>At the moment, the plans for this are not very detailed, but as we think that reports are a major part of the database access in an office suite, this seems to be heavily necessary.</p> <table style="text-align: left; width: 100%;" cellspacing="0" cellpadding="2"> <tbody> <tr class="centered"> <td style="vertical-align: top; width:20%;" class="centered"> <b>required skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>recommended skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>estimated effort</b> </td> <td style="vertical-align: top;" class="centered"> <b>difficulty</b> </td> </tr> <tr> <td style="vertical-align: top; width:20%;"> <ul> <li>C++</li> <li>UNO</li> </ul> </td> <td style="vertical-align: top;"> <ul> <li> experiences with other report generation tools<br/> </li> </ul> </td> <td style="vertical-align: middle; width: 30%; text-align: center;">in the range of man months</td> <td style="vertical-align: middle; text-align: center;">very high</td> </tr> </tbody> </table> <br/> <div style="text-align: right;"> <a href="http://www.openoffice.org">OpenOffice.org</a> - <a href="http://dba.openoffice.org/index.html"> Database Access</a> - <a href="../development/index.html">Development</a> - <a href="../development/index.html">Development</a> </div> <hr style="width: 100%; height: 2px;"> <!-- ========================== --> <!-- New/Enhanced Form Controls --> <h3><a name="form_controls"></a>New/Enhanced Form Controls</h3> <h4>description</h4> <p>Currently, we lack some more sophisticated controls for entering data into forms. This includes controls for <ul> <li> Hyperlinks<br/> This should be specialized text fields, which interpret their content as URL, means they display it in a special way, their text should be clickable, and they allow to browse for an URL.</li> <li> Multimedia Content<br/> Currently, we only have image controls, which allow to interpret binary content found in a database as image. But additionally, we should have at least a “sound control” which allows to store sounds, and play them on request.</li> <li> Unspecified Binary Content<br/> In addition to controls dedicated to special kinds of binary data (such as images and sounds), we should have a generic binary field, which allows to store/load BLOBs (binary large objects) from any source. This would allow the user to store any files in a database, without OOo interfering with this.</li> <li> References to Binary Content<br/> Image as well as sound controls (if we have them) should be able to work with URLs, instead of direct binary content. At the moment, an image control can be bound to a binary field, and tries to interpret any data found in this field as image stream.<br/> We should allow for databases where only references (aka URLs) to images are stored, and adjust the existing image control (as well as the possibly upcoming sound control) in a way that it can be bound to a text field, interpreting the content as URL to the real data.<br/> </li> </ul></p> <table style="text-align: left; width: 100%;" cellspacing="0" cellpadding="2"> <tbody> <tr class="centered"> <td style="vertical-align: top; width:20%;" class="centered"> <b>required skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>recommended skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>estimated effort</b> </td> <td style="vertical-align: top;" class="centered"> <b>difficulty</b> </td> </tr> <tr> <td style="vertical-align: top; width:20%;"> <ul> <li>C++</li> <li>good knowledge about UNO, OOo's component model</li> </ul> </td> <td style="vertical-align: top;"> <ul> <li> knowledge in existing control implementation<br/> </li> </ul> </td> <td style="vertical-align: middle; width: 30%; text-align: center;">1 month for all control derivates together for an experienced developer, plus preceding specification</td> <td style="vertical-align: middle; text-align: center;">high</td> </tr> </tbody> </table> <p>Except the Hyperlink control, probably all other types imply the extension of existing implementations, instead of creating new ones. This mains that this project is not really self-contained, but requires some knowledge in the existing implementations, or at least the will to wade to them before doing any real work :)</p> <div style="text-align: right;"> <div style="text-align: left;"><br/> </div> <a href="http://www.openoffice.org">OpenOffice.org</a> - <a href="http://dba.openoffice.org/index.html"> Database Access</a> - <a href="../development/index.html">Development</a> - <a href="../development/index.html">Development</a> </div> <hr style="width: 100%; height: 2px;"> <!-- =============================== --> <!-- Dialogs with Form Functionality --> <h3><a name="form_dialogs"></a>Dialogs with Form Functionality</h3> <h4>description</h4> <p>When creating a form, the user always needs to bother with a writer (or calc or draw) document. Very often, this is much too oversized. It would be sufficient to have a simple dialog which contains all the data access controls. Now that we have UNO-based dialogs (in the Basic IDE), this is possible in general, as there already are some basics for doing this. There still would be a lot of work to be done (not mentioning the concrete design), but since some months, it's at least possible.</p> <p>The advantage would be to not slay the user with things she does not bother – a writer document offers a lot of possibilities which are not relevant for a form. In some cases, a full writer document does even contradict to what users expect from a form – one thing to mention here is that documents are always freely sizable (and even do autosizing according to the previous instance of the same document type, the screen resolution, whatever), which is nothing you expect from a carefully designed form, where controls are placed at concrete positions and have a fixed size.</p> <table style="text-align: left; width: 100%;" cellspacing="0" cellpadding="2"> <tbody> <tr class="centered"> <td style="vertical-align: top; width:20%;" class="centered"> <b>required skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>recommended skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>estimated effort</b> </td> <td style="vertical-align: top;" class="centered"> <b>difficulty</b> </td> </tr> <tr> <td style="vertical-align: top; width:20%;"> <ul> <li>C++</li> <li>UNO</li> </ul> </td> <td style="vertical-align: top;"> <ul> <li> familarity with OOo's database access and form API</li> <li> familarity with OOo's toolkit API (module com.sun.star.awt)<br/> </li> </ul> </td> <td style="vertical-align: middle; width: 30%; text-align: center;">3 months</td> <td style="vertical-align: middle; text-align: center;">high</td> </tr> </tbody> </table> <br/> <div style="text-align: right;"> <a href="http://www.openoffice.org">OpenOffice.org</a> - <a href="http://dba.openoffice.org/index.html"> Database Access</a> - <a href="../development/index.html">Development</a> - <a href="../development/index.html">Development</a> </div> <hr style="width: 100%; height: 2px;"> <!-- ================================ --> <!-- Re-design the Execute-SQL dialog --> <h3><a name="execute_sql"></a>Re-design the Execute-SQL dialog</h3> <h4>description</h4> OpenOffice.org features a dialog to execute SQL statements directly (without the need to open the query design component), which is especially usefull for quickly executing some CREATE, UPDATE or INSERT statement (or any other statement which needs to be sent to the database bypassing OpenOffice.org).<br/> You can reach this by:<br/> <ul> <li> open a new text document</li> <li> open the data source browser (F4 or View/Data Sources)</li> <li> expand a data source, and connect to it by expanding it's "Tables" entry</li> <li> from the context menu of the data source, choose "SQL"<br/> </li> </ul> The dialog you see there has some disadvantages:<br/> <ul> <li> It does remember the previous statements, but only in a listbox – selecting and distinguishing them is not easy. This should be replaced by another mechanism to recall previously entered statements.</li> <li> It does not remember statement across calls, means the history is lost when the dialog is closed. This is especially annoying as the dialog is modal and needs to be closed before proceeding with the application.</li> <li> it cannot be changed in size<br/> </li> </ul> This dialog could use a re-design for better usability. Designing it could include sneaking how other products handle this ...<br/> <br/> <table style="text-align: left; width: 100%;" cellspacing="0" cellpadding="2"> <tbody> <tr class="centered"> <td style="vertical-align: top; width:20%;" class="centered"> <b>required skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>recommended skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>estimated effort</b> </td> <td style="vertical-align: top;" class="centered"> <b>difficulty</b> </td> </tr> <tr> <td style="vertical-align: top; width:20%;"> <ul> <li>C++</li> </ul> </td> <td style="vertical-align: top;"> <ul> <li> familarity with the VCL, OOo's graphics toolkit<br/> </li> </ul> </td> <td style="vertical-align: middle; width: 30%; text-align: center;">4 weeks</td> <td style="vertical-align: middle; text-align: center;">medium</td> </tr> </tbody> </table> <br/> <div style="text-align: right;"> <a href="http://www.openoffice.org">OpenOffice.org</a> - <a href="http://dba.openoffice.org/index.html"> Database Access</a> - <a href="../development/index.html">Development</a> - <a href="../development/index.html">Development</a> </div> <hr style="width: 100%; height: 2px;"> <!-- ==================================================== --> <!-- Native, cross-platform access to MS Access databases --> <h3><a name="cross_access"></a>Native, cross-platform access to MS Access databases</h3> <h4>description</h4> <p><em>preliminary note</em>: In the meantime, there is an alpha version of a driver for this. It's an OOo database driver which uses <a href="http://mdbtools.sourceforge.net">MDB Tools</a> to read MS Access databases. See <a href="../drivers/mdb/index.html">it's home page</a> for more info.</p> <p>A major goal of OpenOffice.org (in particular for release 2.0) is interoperability with other office applications, especially with a certain office suite which currently has some greater market share than OpenOffice.org has :).</p> <p>Unfortunately, currently OOo users, as long as they don't work on Windows, are not able *at all* to access the databases of this office suite - we cannot read MDB files on platforms other than Windows (where we can use Microsofts own API).</p> <p>So the goal here is to allow Linux users to at least read the data from MDB files, using OOo.</p> <p>There are several ways how this could be done.<br/> One is to use MDB Tools, and wrap them in OOo. Since the SQL capabilities of the MDB Tools parser are limited (e.g., no OR conditions in WHERE clauses are allowed), this requires work in either MDB Tools itself (by improving their parser), or it would be used as provider for raw data, and OOo would faciliate it's own parser/query engine (which unfortunately is also limited) to process this data.<br/> Another current disadvantage of MDB Tools is that it doesn't handle UTF8, and since jet4 databases stored their data in UTF8, this implies that it cannot be used for jet4 databases containing non-ASCII characters (well, probably a little bit more that ASCII, but it's a serious limitation for an product as international as OpenOffice.org).</p> <p>Another way would be to re-engineer the MDB format ourself, and write a native SDBC driver (which could be in C++ or probably even in Java) which provides the data. This is similar to the first approach, where MDB Tools would have been used as the provider of raw data.</p> <table style="text-align: left; width: 100%;" cellspacing="0" cellpadding="2"> <tbody> <tr class="centered"> <td style="vertical-align: top; width:20%;" class="centered"> <b>required skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>recommended skills</b> </td> <td style="vertical-align: top;" class="centered"> <b>estimated effort</b> </td> <td style="vertical-align: top;" class="centered"> <b>difficulty</b> </td> </tr> <tr> <td style="vertical-align: top; width:20%;"> <ul> <li>C++</li> </ul> </td> <td style="vertical-align: top;"> <ul> <li> familarity with OOo's database access API </li> </ul> </td> <td style="vertical-align: middle; width: 30%; text-align: center;">6 weeks</td> <td style="vertical-align: middle; text-align: center;">medium</td> </tr> </tbody> </table> <br/> <div style="text-align: right;"> <a href="http://www.openoffice.org">OpenOffice.org</a> - <a href="http://dba.openoffice.org/index.html"> Database Access</a> - <a href="index.html"> Miscellaneous</a> - <a href="development/projects.html"> Developer Projects</a> </div> <hr style="width: 100%; height: 2px;"> </div> </body> </html> File [added]: project_structure.html Url: http://dba.openoffice.org/source/browse/dba/www/development/project_structure.html?rev=1.1&content-type=text/vnd.viewcvs-markup Added lines: 100 ---------------- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <meta http-equiv="Content-Style-Type" content="text/css" /> <style type="text/css">@import url("/css/dba.css");</style> <title>OpenOffice.org Base - Miscellaneous</title> <script type="text/javascript" src="/js/dba_default.js"></script> </head> <body lang="en-US"> <b>Project Sections</b>: <a href="../index.html">Home</a> | <a href="../specifications/index.html">Specifications</a> | <a href="../QA/index.html">QA</a> | <a href="./index.html"><b>Development</b></a> | <a href="../drivers/index.html">Drivers</a><br/> <b>Development Sections</b>: <a href="../development/projects.html">Developer Projects</a> | <a href="./project_structure.html"><b>Project Structure</b></a> <div class="dba"> <h2>Project structure</h2> <table cellpadding="0" cellspacing="0"> <tbody> <tr class="MainTableHeader"> <td colspan="2" width="100%">Modules in the Database Access Project</td> </tr> <tr class="InnerTableHeader"> <td style="vertical-align: top;" width="15%">Module</td> <td style="vertical-align: top;">Functionality</td> </tr> <tr class="OddTableRow"> <td style="vertical-align: top;" width="15%"><a href="http://dba.openoffice.org/source/browse/dba/connectivity/">connectivity</a><br/> </td> <td style="vertical-align: top;">Base connectivity. This module contains database driver implementations for ODBC 3.0, JDBC, ADO, dBase, and CSV files. The way to access these drivers is very similar to JDBC as the drivers implement an API which covers the JDBC API..<br/> </td> </tr> <tr class="EvenTableRow"> <td style="vertical-align: top;" width="15%"><a href="http://dba.openoffice.org/source/browse/dba/dbaccess/">dbaccess</a><br/> </td> <td style="vertical-align: top;">Database access layer. This module contains code for accessing databases from applications. It also contains the following: <br/> <ul> <li> Core implementations for configuration of data sources</li> <li> Additional implementations like RowSets and abstractions like database meta informations</li> <li> A graphical user interface (GUI) for customizing data sources and access to data<br/> </li> </ul> </td> </tr> </tbody> </table> <br /> <table cellpadding="0" cellspacing="0"> <tbody> <tr class="MainTableHeader"> <td colspan="2" width="100%">Modules in other Projects, related to Database Access</td> </tr> <tr class="InnerTableHeader"> <td style="vertical-align: top;" width="15%">Module<br/> </td> <td style="vertical-align: top;">Functionality<br/> </td> </tr> <tr class="OddTableRow"> <td style="vertical-align: top;" width="15%"><a href="http://dba.openoffice.org/source/browse/gsl/forms/">forms</a><br/> </td> <td style="vertical-align: top;">This module, though currently part of the GSL project, is related to Database access as well. It contains most of the code necessary to build up a form layer (means the components for logical forms, control models, and controls). This project is self-contained, means it is only exporting UNO components.<br/> </td> </tr> <tr class="EvenTableRow"> <td style="vertical-align: top;" width="15%"><a href="http://dba.openoffice.org/source/browse/graphics/svx/">svx</a><br/> </td> <td style="vertical-align: top;">Additional implementations for integrating the form layer into the aplications can be found in the SVX module, project grahics. Here, the directories svx/source/form and svx/source/fmcomp belong to Database Access.<br/> <br/> Additionally, basics for the form layer (more precise, basics for integrating UNO controls into applications drawing layer) can be found in svx/source/svdraw.<br/> </td> </tr> </tbody> </table> </body> </html> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
