---------------------------------------------------------------------------
                   ORIENT ODBMS: 100% Pure Object Database
                               JUST Edition  

                   Copyright (c) 2001 Orient Technologies
                        (www.orientechnologies.com)
                           All rights reserved.

 Current version..: 1.1
 Release date.....: March, 5th 2001
---------------------------------------------------------------------------

---------------------------------------------------------------------------
                          << TABLE OF CONTENTS >>
---------------------------------------------------------------------------
 1  - INTRODUCTION

 2  - LICENSING

  2.1 - DISCLAIMER OF WARRANTY

  2.2 - PRICES
      2.2.1 - SDK (SOFTWARE DEVELOPMENT KIT) LICENSE
      2.2.2 - RUN-TIME LICENSES

  2.3 - LITE VERSION LICENSE

 3 -  REQUIREMENTS
  3.1 - WIN32/INPRISE BORLAND C++ BUILDER 5
  3.2 - WIN32/MICROSOFT VISUAL C++ 6
  3.3 - LINUX/GCC

 4 -  INSTALLATION

 5 -  DISTRIBUTION

 6 - CONFIGURATION
  6.1 - ALL COMPILERS
  6.2 - WIN32/INPRISE BORLAND C++ BUILDER 5
  6.3 - WIN32/MICROSOFT VISUAL C++ 6
  6.4 - LINUX/GCC

 7 -  PROGRAMMING WITH C++

 8 -  DOCUMENTATION

 9 -  KNOWN BUGS AND PROBLEMS

10 -  WISH LIST

11 -  CONTRIBUTE

12 -  CONTACTS


---------------------------------------------------------------------------
 1 - INTRODUCTION
---------------------------------------------------------------------------
Orient ODBMS is an ODBMS (Object Database Management System) compliant with 
the ODMG 3.0 standard (http://www.odmg.org).

This document provides an overview of the Orient environment and its use.


---------------------------------------------------------------------------
 2 - LICENSING
---------------------------------------------------------------------------
Copyright (c) 2001 - Orient Technologies - All rights reserved.

All other company names and products mentioned herein are trademarks of
their respective companies.

USE OF THE ENCLOSED SOFTWARE INDICATES YOUR ASSENT TO THE FOLLOWING LICENCE
CONDITIONS.


2.1 - DISCLAIMER OF WARRANTY

This software is provided "as is" without warranty of any kind, either 
expressed or implied. The entire risk as to the quality and performance of 
the software is with you. Should the software prove defective, you assume 
the cost of all necessary servicing, repair, or correction. In no event 
shall the author, copyright holder, or any other party who may redistribute 
the software be liable to you for damages, including any general, special, 
incidental, or consequential damages arising out of the use or inability to 
use the software (including, but not limited to, loss of data, data being 
rendered inaccurate, loss of business profits, loss of business 
information, business interruptions, loss sustained by you or third 
parties, or a failure of the software to operate with any other software) 
even if the author, copyright holder, or other party has been advised of 
the possibility of such damages. 

You are granted a personal and non-transferable right to use a single copy 
of the enclosed software.

You are NOT allowed to:

- reverse-engineer, decompile or disassemble the software;
- manipulate or alter the components that make up this software in ANY way;
- repackage the files that come with this software.
- use parts of this software that come in source code format in order to
  enhance competing products.

THE AUTHORS OF THIS SOFTWARE CANNOT BE HELD LIABLE FOR ANY DIRECT OR 
INDIRECT DAMAGE ARISING THROUGH INSTALLATION AND/OR USE OF THE SOFTWARE.

VIOLATION OR NON-ACCEPTANCE OF ANY OF THE ABOVE LICENCE CONDITIONS 
IMMEDIATELY AND UNCONDITIONALLY TERMINATES YOUR LICENCE.

2.2 - PRICES

2.2.1 - SDK (SOFTWARE DEVELOPMENT KIT) LICENSE

The Software Development Kit of the Just edition is totally free. So you 
can use it with no pay.

2.2.2 - RUN-TIME LICENSES

The run-time licenses are intended as the number of executable that use the 
Just library.

The Just edition is totally free for NO-COMMERCIAL PURPOSE, so you can 
distribuite the Just library with your application for free.

If you use this product for a COMMERCIAL PURPOSE you had to register buying 
the run-time licenses, one per executable that use the Just library.

For prices list and payment ways, please contact the sales manager at: 

sales@orientechnologies.com or go to the web site:
http://www.orientechnologies.com.

2.3 - LITE VERSION LICENSE

The Orient ODBMS distribution cames with a "LITE" version of license that is
full working with some limits:

- Database size is limited to 10 MB.
- Maximum 3 concurrent database sessions (for Multi-Threads version).

Remember that you must however buy run-time licenses if your product is for a
COMMERCIAL PURPOSE (see 2.2.2).

---------------------------------------------------------------------------
 3 - REQUIREMENTS
---------------------------------------------------------------------------

3.1 - WIN32/INPRISE BORLAND C++ BUILDER 5.0+

- Pentium Processor or equivalent
- 16 MB RAM

- Microsoft Windows 95, 98, 2000, NT 4.0
- Borland C++ Builder 5.0 (not tested with Borland C++ 5.5 Free Compiler)


3.2 - WIN32/MICROSOFT VISUAL C++ 6

- Pentium Processor or equivalent
- 16 MB RAM

- Microsoft Windows 95, 98, 2000, NT 4.0
- Microsoft Visual C++ 6.0 SP3


3.3 - LINUX/GCC

- Pentium Processor or equivalent
- 16 MB RAM

- Linux kernel 2.2.17 or major
- GNU Compiler 

---------------------------------------------------------------------------
 4 - INSTALLATION
---------------------------------------------------------------------------
To install the Orient Just library follow this steps:

1. Unpack the distribution archive in a directory of your file system (i.e.
   C:\Orient or /home/Orient).

2. After unpacking the distribution archive you should obtain the files
   reported in chapter DISTRIBUTION.

3. Set the ORIENT_HOME environment variables to your Orient directory path.

   3.1 Win32 systems:
       1. Open your Control Panel and select System icon
       2. Select Environment tab and insert the new ORIENT_HOME variables
          and assign it to your Orient directory
   3.2 UNIX systems:
       1. Edit your profile (.profile in ksh) and create a new line
          inserting set $ORIENT_HOME=<your_path>

4. Set the $PATH environment variables to your Orient binaries directory
   path.

   4.1 Win32 systems:
       1. Open your Control Panel and select System icon
       2. Select Environment tab and modify the new PATH variables adding
          "%ORIENT_HOME%\bin;"
   4.2 UNIX systems:
       1. Edit your profile (.profile with ksh, .bashrc with bash, etc.)
          and modify the PATH variables adding "$ORIENT_HOME/bin"


---------------------------------------------------------------------------
 5 - DISTRIBUTION
---------------------------------------------------------------------------
After unpacking the distribution archive you should obtain the following 
files:

NOTE: The distribution may change based on platform !


Orient/
       readme.txt                     : This file
       history.txt                    : Release history
       roadmap.txt                    : Future releases roadmap
                                      
       bin/                           
         orient.lic                   : Lite license
         odlcomp[.exe]                : ODL compiler
         oconsole[.exe]               : ODL compiler
         ojust_msvc6_st.dll           : MSVC6 Single-thread Just library
         ojust_msvc6_mt.dll           : MSVC6 Multi-threads Just library
         ojust_bcb5_st.dll            : BCB5 Single-thread Just library
         ojust_bcb5_mt.dll            : BCB5 Multi-threads Just library
         msvcrt.dll                   : Microsoft Run-time Library
         msvcp60.dll                  : Microsoft Run-time Library
                                      
         classes/                     
           jdo_0_92.jar               : Java Sun JDO interfaces
           com/                       
             orient/                  
               jdo/                   : Java mapping classes (not yet available)
               tools/                 
                 obackup.class        : Backup console tool
                 orestore.class       : Restore console tool
                                      
       demo/
         business/
           business.odl               : Samples business database schema
           business_preallocated.odl  : Samples business database schema with preallocated segment space
           business.h                 : Header file generated by odlcomp tool
  
           business_demo.bpg          : BCB5 Project group file all projects below
           business_demo.dsw          : MSVC6 Workspace container of all projects below
  
           createDb[.exe]             : Create the database business at run-time
           createDb.cpp               : Source file
           createDb.dsp               : MSVC6 Project file
           createDb.bpr               : BCB5 Project file
  
           writeCustomers[.exe]       : Write <arg> customers into business database
           writeCustomers.cpp         : Source file
           writeCustomers.dsp         : MSVC6 Project file
           writeCustomers.bpr         : BCB5 Project file
  
           selectCustomer[.exe]       : query into business database for customers
                                        with code equal to <arg>
           selectCustomer.cpp         : Source file
           selectCustomer.dsp         : MSVC6 Project file
           selectCustomer.bpr         : BCB5 Project file
  
           countCustomers[.exe]       : Counts the customers into business database
           countCustomers.cpp         : Source file
           countCustomers.dsp         : MSVC6 Project file
           countCustomers.bpr         : BCB5 Project file
  
           writeInvoice[.exe]         : write <arg1> invoices into business database
           writeInvoice.cpp           : Source file
           writeInvoice.dsp           : MSVC6 Project file
           writeInvoice.bpr           : BCB5 Project file
  
           selectInvoice[.exe]        : query into business database for invoice
                                        with code equal to <arg>
           selectInvoice.cpp          : Source file
           selectInvoice.dsp          : MSVC6 Project file
           selectInvoice.bpr          : BCB5 Project file
  
           selectAllInvoice[.exe]     : read all invoice objects
           selectAllInvoice.cpp       : Source file
           selectAllInvoice.dsp       : MSVC6 Project file
           selectAllInvoice.bpr       : BCB5 Project file
  
           writeCustomers_mt[.exe]    : Create <arg1> cuncurrent sessions writing
                                        <arg2> customers into business database
           writeCustomers_mt.cpp      : Source file
           writeCustomers_mt.dsp      : MSVC6 Project file
           writeCustomers_mt.bpr      : BCB5 Project file
           
         tests/
           test.odl                   : Test database schema
           test.h                     : Header file generated by odlcomp tool
  
           tests.bpg                  : BCB5 Project group file all projects below
           tests_st.dsw               : MSVC6 Workspace container of all projects below
  
           test1.*                    : Create objects of different classes
           test2.*                    : Query for objects and bind/lookup one object
           test3.*                    : Query for objects and delete one object
           test4.*                    : Execute random N operations among creation,
                                        queries, updates, deletion, commit, abort, etc.
           test5.*                    : Makes some operation on objects to test the Cache
                                        Manager

       include/                       
         ojust.h                      : Just Edition client header file to include
                                        in the user applications
         *.h                          : Internal include files
                                      
       lib/                           
         ojust_msvc6_st.lib           : MSVC6 Single-thread Just Edition client library
         ojust_msvc6_mt.lib           : MSVC6 Multi-threads Just Edition client library
         ojust_bcb5_st.lib            : BCB5 Single-thread Just Edition client library
         ojust_bcb5_mt.lib            : BCB5 Multi-threads Just Edition client library
         ojust_linux_st.a             : LINUX Single-thread Just Edition client library
         ojust_linux_mt.a             : LINUX Multi-threads Just Edition client library
                                      


---------------------------------------------------------------------------
 6 - CONFIGURATION
---------------------------------------------------------------------------
6.1 - ALL COMPILERS

1. MULTI-THREADS: Set OMT define in your client application to working with
   the multi-thread version.


6.2 - WIN32/INPRISE BORLAND C++ BUILDER 5.0+

1. Setting defines: Set the compiler defines with Project/Options
   menu select Directories/Conditionals and in the Conditional
   Defines add:
   - OS_WIN32
   - COMP_BCB5

2. Setting alignment to 4 bytes: Orient Just Edition is compiled using
   alignment to 4 bytes. Thus your application should set Byte Alignment
   to 4 too! For changing Byte Alignment go to Project/Option menu,
   select Advanced Compiler tab and set alignment to Double Word (4 bytes).

3. Enable the RTTI: Open Project/Options, select the C++ tab and enable
   the Enable RTTI option.

3. Enable Exceptions: Open Project/Options, select the C++ tab and enable
   the Enable exceptions and Destructor cleanup options.



6.3 - WIN32/MICROSOFT VISUAL C++ 6

1. Set the compiler defines with Project Settings, C/C++ tab and
   General category and in the Preprocessor Definition add:
   - OS_WIN32
   - COMP_MSVC6

2. Setting alignment to 4 bytes: Orient Just Edition is compiled using
   alignment to 4 bytes. Thus your application should set Byte Alignment
   to 4 too! For changing Byte Alignment go to Project Settings, C/C++ tab and
   Code Generation category and set Struct Member Alignment to 4 bytes.

3. Enable the RTTI: Check the option Enable RTTI on Project Settings, C/C++
   tab and C++ Language category.



6.4 - LINUX/GCC

Set the compiler defines (with -D option in g++ compiler line or makefile):
- OS_LINUX



---------------------------------------------------------------------------
 7 - PROGRAMMING WITH C++
---------------------------------------------------------------------------
For more information see the Orient Main Guide, chapter "User Application
Life Cycle".


To use the C++ Just library in your applications you had to:

1. Create the database schema in ODL language and save it as <schema>.odl

2. Compile the schema with the ODL compiler using "odlcomp [options]
   <schema_odl> <database_name>", type just odlcomp for help.

3. If the compiler doesn't found any errors you'll find some files in the
   current directory.

4. Add to your compiler path the Orient includes directory:
   $ORIENT_HOME\include.

5. Configure your compiler environment following the chapter CONFIGURATION.

6. Create a new library containing the persistent sources generated by the
   odlcomp (*.cpp). Write the implementation of the persistent classes
   filling the sources generated by the odlcomp.

7. Create the application source including the "<database>.h" file
   generated by the odlcomp and linking the ojust_<version>_<st|mt>.lib
   (for Win32 systems where <version> is the version of compiler: see 
   DISTRIBUTION chapter) or ojust_linux_<st|mt>.a (for UNIX systems). Link
   also the library containing all the persistent classes or link the
   object files directly.

8. Consult the C++ language APIs guide.


---------------------------------------------------------------------------
 8 - DOCUMENTATION
---------------------------------------------------------------------------
The documentation is present at <docs> directory in HTML format:

- Main Guide...........: Orient ODBMS features,
- C++ User Guide.......: Orient C++ environment.
- C++ Reference Guide..: Orient C++ reference guide with the description
                         of all API's.


---------------------------------------------------------------------------
 9 - KNOWN BUGS AND PROBLEMS
---------------------------------------------------------------------------
Known bugs:

- NOT Operator doesn't work in query.
- Parentesis ar enot supported in query predicates.


Problem report:

Problems and bugs should be sent to: staff@orientechnologies.com
specifying:
 
- Edition (Just/Enterprise),
- Release,
- Platform (Win32, Linux, etc.),
- Compiler (BCB5, MSVC6, GCC, etc.),
- ST (Single-thread) or MT (Multi-threads),
- Brief description of your scenario,
- Kind of problem,
- Source code near the problem/bug
 
The Orient Staff will work to the problem and will release the
correction in the next version of Orient ODBMS.


---------------------------------------------------------------------------
10 - WISH LIST
---------------------------------------------------------------------------
Orient ODBMS's Roadmap changes dinamically at every release depending on
user requestes, market directions, etc.

See the latest roadmap at:
>> http://www.orientechnologies.com/docs/roadmap.txt

If you want contribute to the Orient ODBMS Roadmap, send your suggestions
and requests to: staff@orientechnologies.com


---------------------------------------------------------------------------
11 - CONTRIBUTE
---------------------------------------------------------------------------
Orient Technologies needs help to:

- Develop components, interfaces and tools,
- Develop language binding (Java, Delphi, Eiffel, Perl, Python, etc.),
- Test the software,
- Write white papers, manuals and books.
- Build services on top of Orient ODBMS

If you develop a product based on Orient ODBMS that Orient Technologies
is interested to insert in the official distribution, Orient Technologies
will evaluate with you your effort and will pay you by:

- LICENSES BONUS

  You will have licenses as refund.
  
- ROYALTIES PAYMENT

  Orient will refund royalties on you product for each Orient License
  sold.
  
If you want to contribute please contact:
>> staff@orientechnologies.com


---------------------------------------------------------------------------
12 - CONTACTS
---------------------------------------------------------------------------
For informations about Orient ODBMS product please don't hesitate to 
contact:
>> info@orientechnologies.com.

The latest version of Orient ODBMS is always present on-line at URL:

>> http://www.orientechnologies.com

If you want to build components, interfaces or tools for the Orient ODBMS 
please contact: staff@orientechnologies.com



---------------------------------------------------------------------------
Regards,
Orient staff
staff@orientechnologies.com
---------------------------------------------------------------------------

