ODABA Releases TODBMS and Tools 12.3.0
The latest version of the Terminology-Oriented Database Management System (TODBMS) ODABA has been released on Thursday, August 8th, 2013. Several useful extensions have been made in order to improve usability. Moreover, OSI functionality has been extended in order to use OSI more comfortable. Several mixed code applications (OSI/C++) have been build for customers, which proved the usability of OSI and C++ programming. OSI debug features have been extended and template class SET has been provided in order to support typed property handles.
The ODABA as well as the ODABAGUI API have been extended. Moreover, additional service classes have been provided for Email and configuration file support. Hierarchical configuration files may be provided now as ini- or xml-file. Essential changes have been made for the installation in order to simplify running examples. Several minor improvements have been made for ODABA database and ODE tools.
Several extensions have been made to the GUI framework. Default login handlers and procedures have been provided for batch and GUI applications. Tree behavior has been improved and several minor features have been added.
Finally, many bugs have been detected and removed. More details are described in change logs and in notices delivered with the development databases (ODE tools: Object/Notices). Notices delivered with the databases also contain a list of open topics planned for next releases. Notices are stored separately for basic functions (sos.dev), database kernel (opa.dev), GUI framework (gui.dev) and ODE tools (ode.dev).
Detailed changes (ODABA)
Several extensions have been made in order to improve the usability of the ODABA API. Working on different customer projects has shown important gaps in the API, which have been filled. Moreover, OSI functionality has been extended in order to use OSI more comfortable, but also for simplifying the use of the OSI debugger, e.g. by entering the debugger with ctrl-c, also when not running in debug mode.
Most of the features result from practical requirements met in several customer projects. Several mixed code applications (OSI/C++) have been build and transferring OSI code to C++ and reverse got more support by appropriate macros and template classes, which allow nearly identical coding in C++ and OSI.
ODABA Database kernel (base)
This version provides several minor changes and extensions for the kernel functionality. Especially features for supporting enumerations have been improved:
- Enumerator attributes
Attributes for enumerated values (label, description, condition etc.) can be accessed as value attributes (e.g. age_group.condition)
- Improved support for hierarchical enumerations
For hierarchical enumerations, sub lists are created and values are searched recursively.
Moreover, configuration and ini-files have been extended in order to support hierarchical configuration files of any nesting level. Section hierarchies in ini-files may be constructed as series of inline sections or by means of section references. Moreover, ini-files may be defined also as xml configuration files.
ODABA Application Program Interface (base/opa)
Several extensions and changes have been made to the ODABA API:
- key - get key at position
- provide - (changed) automatically set required type for weak-typed collections, i.e. explicit setType not required anymore.
- locate - (changed) function refreshes the instance when read is required
- orderBy - create transient indexes at run-time referring to persistent or transient attributes
- evaluate - recalculate transient attributes
- match - check string for pattern
- replaceOptions - replace option values in a string
- isNumber - check whether string value is a valid number or not
The ODABA StringList class now provides an OSI interface.
- doAfterStore - allows updating instances while handling the event. Instances may be stored ones when handling the doAfterStore event. Storing instances recursively this way will not cause an additional store events. Storing instances recursively more than 3 time will cause an exception (system assumes an infinite recursion)..
- doAfterStore - allows updating instances while handling the event. Instances may be stored ones when handling the doAfterStore event. Storing instances recursively
- DatabaseContext - default login function
While opening a database, a default login function may be called by calling login() in the doBeforeOpen handler of the database context. The function call invokes a default implementation of executeLogin(), which provides a default login implementation, but may also be overloaded in the application.
Some general changes have made:
- Action parameters for context class actions
After executing context class actions or event handlers, the context class parameter list will be reset in order to clear parameters for next function call.
- SET - template class
The SET template class has been defined in order to allow defining typed property handles, but also for making C++ and OSI programming more similar. Now, both allo property handle definitions like: SET< Person > pers;
- utils namespece (Service classes)
A new namespace supporting several service classes, which will be added on demand, has been provided. So far, two service classes have been implemented:
- Email - sending and receiving emails
- IniFile - accessing configuration or ini-files
More details are described in ODABA online documentation: Reference documentation/ODABA Application Program Interface.
ODABA Script Interface OSI
Several extensions made to OShell, ODABA Script Interface (OSI) and OSI debugger:
- Break into OSI debugger by pressing ctrl-c
- Extended OSI parameter declaration
- Priority order changed
- Use of Property variables in OSI
- New data types int64 and uint64 (OSI)
OSI parameter definition in method calls has been extended in order to support addition keywords (UNIQUE, DESCENDING, STATIC etc).
Now, OSI functions are looked up before C++ interface functions. Thus, OSI functions will overwrite C++ function calls.
Property variables used in OSI functions become application data type properties, which allows also calling class member functions for variables declared as Property (abstract data type).
OSI supports data type names int64 and uint64 as well as uint32. This are simply acronyms for unsigned long, unsigned long long, which have been introduced for supporting compatibility between OSI and CPP.
- Null values accepted for reference assignment
In order to reset assigned reference values, one may assign Null values to a reference variable without throwing an exception.
Open document support
Some improvements have been made to open document generation (LibreOffice). Additional changes have been made in order to support LibreOffice 4.3.
- Table document export
Table definitions in QHtml text fields are exported properly to open document format (LibreOffice)
- Debugging document generation
Besides writing generated templates to a file, also generated OSI functions may be written to a file in order to support testing document templates. Instead of the output template file name, now a directory has to be defined in which both files are stored.
- Character encoding for dictionaries
Spellchecker now accepts dictionaries with different encodings
Detailed changes (ODE and GUI framework)
Some minor extensions have been made in the GUI framework and for ODE tools. The ODABAGUI API has been extended and some minor changes have been made in order to improve the behavior of tree controls and mouse event handling. Besides, some minor bugs have been removed, which are reported in the change log.
GUI Framework (gui)
The GUI framework kernel had been optimized. Especially, the tree behavior has been improved.
- Check boxes in lists, trees and tables
- Trees react on mouse events
- Date control
- Support trees in drop boxes
- Support mouse key event in action definitions
- EditEntry action supported as default action for complex controls (forms)
- Support for ordering trees and tables
When checking check box values in trees or tables, the line will be selected before changing the value in order to apply changed data to the correct instance.
supports removeEntry (clear data) and InserEntry (get data from calender) as default actions.
One may define trees for drop boxes, but those should be expanded befor being displayed.
Lists and trees are supported by order functions (getting or setting order columns). Moreover, order events fired before and after ordering lists or trees
- Support for hierarchical column definitions
Hierarchical or nested column definitions allow providing column schemata, which may apply on several lists or tables
- Show level and display level
The GUI framework now differs between the show level (level on which a control is visible) and the display level (level, currently selected for the control
ODE tools (ode)
Ode tools have been changed slightly in for better supprting mixed coding (OSI, C++, C#)
- Generate LEAVE instead of LEAVESEQ
In order to improve compatibility between C++ and OSI, Ctrl-L now (source code editor) generates always LEAVE
- Code generation changed
In order to re-import source code properly, code generation has changed by adding several keywords (\project, \function, \implementation)
- Re-importing generated code
ClassEditor now provides functionality for importing C++ and OSI code generated from ClassEditor.
- In order to propose property context class names, options (e.g. CLASS_NAME) may be referenced in class name patterns defined in implementation options
- New Image dialog for edit images in text blocks
ODABA GUI Application Program Interface (gui/ode)
Several functions and event handlers have been added or changed behavior.
- hasData - check data source for control
- highContextExist - checks, whether context has a parent or not
- showLevel - show level for a control
- orderColumn - current order column
- changeOrderColumn - changes the order column for a list, tree or table
- rowCount - returns the number of rows in a table, tree or list
- doBeforeOrder - event handler before changing order column
- doAfterOrder - event handler after changing order column
- setProperty - set data source for a region in a tree or list
- Line - additional constructor by row number
- attach - attach line by row
Documentation has been extended. Especially, documentation for installation procedure and running the Sample have been improved. If anybody needs specific topics or areas to be documented, we will consider this in our documentation priority list.
ODABA, including applications and libraries, is available for free under Open Source licenses (GPL). ODABA runs on various hardware configurations, operating systems and works on many desktop environments. ODABA can be obtained as source code distribution and in various binary formats from http://sourceforge.net/downloads/odaba/.
Several features require third party components, which have to be installed before installing ODABA. When the corresponding libraries are not available, one may install ODABA, but the features referenced below will not work.
- libzip - required for LibreOffice document generation
- zlib - required for data compression and database backup and restore)
- curl - required for enhanced email support)
- hunspell - required for spell check in ODE tools, like terminus
When running ODABA 11.x.x or higher, no upgrade is necessary. When still using ODABA 10.x.x, resource databases and databases referring to ODABA system data types need to be upgraded. Details about how to call a database upgrade are described in the readme file for the ODABA 11.0.0 installation.
With the release of ODABA 12.3.0 we declare the end of live for all previous released ODABA versions. Bug fixes on 12.2.x version are provided on demand.
In order to get the most out of this release, we recommend to use a recent computer with at least 1 GB of memory and 2 GHz CPU or better. In order to install the binaries, about 100 MB are required. Installing sources requires about 50 MB. 80 MB are required in addition, when installing the documentation locally.
RUN-Software develops database management system ODABA and tools since 1994. Besides general and particular software solutions, RUN-Software publishes theoretical works about database theory and terminology in connection with data modeling.
See also: www.run-software.com