Fl - DataBase Tools                    
Foudation Layer(FL) Database Tools versions releases

  2001-08-21, sun
  - Connection pool was updated for MySQL database:
    - ConnectionPoolWithQueueMySQL was added.
    - ConnectionProxy was fixed: internalClose: rollback was removed for 
      autocommitted connection.
  - ConnectionPoolWithQueue was fixed:
    - small performance leak was fixed in pool refreshing.
  2001-08-20, sun
  - Logging in FL core, FL modules was updated from
    org.log4j to org.apache.log4j.
  2001-08-04 (FLGen), sun
    - FLGenUtilWriter was fixed:
      - database creation:
        - connection commit before setAutoCommit(true) was added for MSSQL.       
  2001-07-31 (FL OQL)
  - SQLNames, SQLNamesImplFLUML were updated:
  - getDeployedClasses() method was added.
  - FLMapping was updated:
    - DEPLOYED_ENTITIES parameter was added to mapping.
  - ImplObjectManager initialization was updated:
    - connection pool tuning for valid pool refresh:
      - "Pool.fill.factor" property was added. See
        %FL_HOME%\doc\howto\FLInitialization.txt for details.
      - cpwq.setCheckMetadataOnRefresh(true) was added for InterBase and MSSQL
        databases. See API documentation on
        for details.
      - cpwq.setCheckMetadataOnConnectionClose(true) was added for MSSQL
        database. See API documentation on
        for details.
  - Refresh of connection pool was added:
    - ConnectionPoolWithQueue:
      - refreshConnections(), fillConnectionPool() were added.
      - float fillFactor, boolean checkMetadataOnRefresh,
        boolean checkMetadataOnConnectionClose parameters were added.
- Connection pool classes were updated to work with MySQL database (support was added to connection pool only, FL does not support this database). Please keep in mind that now you can get connection via ImplObjectManager.getReadOnlySQLConnection() method in autocommit mode: - ConnectionProxy was updated: - setAutoCommit(false) was removed from constructor. - now it executes rollback on close for connection with autocommit of false only. - FLTxnConnectionProxy: - setAutoCommit(false) was added to constructor. - ImplObjectManager: - constructor was updated to init DriverDataSource by user name and password instead of creation corresponding properties. - Connection pool changes: - ConnectionPoolWithQueue was updated: - getConnection was updated: logging stack traces of all busy connections was added (if debug logging mode is enabled). - DriverDataSource: - DriverDataSource(String url, String user, String password) constructor was added.
- Allocation via database was added for Oracle: use ImplObjectManager.enableDBKeyAllocation(int) to enable this feature. FL uses 'fl_entity_keys' table to allocate keys. If this table is not existed FL creates it on the first enableDBKeyAllocation call. Also on enableDBKeyAllocation call FL initializes id counter according to entity0 table. Thus if you do'not use enableDBKeyAllocation then there are no changes for your application and database. If you use enableDBKeyAllocation then FL automatically creates the necessary table and initializes id counter. If allocation via database was enabled then RMI cluster is forbidden and vice versa. - KeyAllocator class was added. - JDBCAccessor: methods were added: - allocateEntityKeys - initEntityKey - getDBType - JDBCAccessorOracle was updated: entity key allocation was added. - EntityIntIdFactory was updated: - keyAllocator was added - not used allocIntId(int count) was removed - ImplObjectManager.enableDBKeyAllocation(int) was added.
  - ConnectionPoolWithQueue was updated: getConnection(), close():
    logging was added.
  - ObjectManager, ImplObjectManager were updated: getServerURL() method was
  - ImplObjectManager was updated: constructor with javax.sql.DataSource 
    argument was added.
  - Logging was updated in com.novosoft.fl.jdbc.fltxn.FLTxnDataSource: usage of
    logWriter was changed to usage of org.log4j.Category.
  - ConnectionPoolWithQueue was updated: getConnection() in closed state (case
    of creation of the new connection; getLogWriter, setLogWriter were
  - Classes were renamed:
     - ru.novosoft.jdbc.pool.driver.DriverConnectionPoolDataSource to
     - ru.novosoft.jdbc.pool.driver.DriverPooledConnection to
     - ru.novosoft.jdbc.pool.driver.DriverPooledConnectionProxy to
  - Connection pool was REPLACED with queue based implementation:
    - removed:
      - PooledDataSource
      - ConnectionValidator
      - ConnectionValidatorImpl
    - rebuilt:
      - DriverPooledConnection
      - DriverConnectionPoolDataSource
      - ConnectionPoolWithQueue
    - updated:
      - DriverPooledConnectionProxy
    - added:
      - DriverDataSource
      - Queue
  - FL core updates up to the new connection pool:
    - FLConnectionValidatorImpl, FLConnectionValidatorImplInterbase were
    - JDBCAccessor, JDBCAccessorInterbase were updated: 
      getConnectionValidator() method was removed.
    - ImplObjectManager was updated: datasource initialization.
  - Log class was updated: now warnings of '01I06' state are logged without
    stack trace. Thus Informix database warnings of that state are logged
    like the following: "Statement SQLWarning: java.sql.SQLWarning: 
    Informix extension to an ANSI-compliant standard syntax".
  - Fixed: ConnectionPoolWithQueue.getConnection: connection.rollback() was 
    moved out of synchronized section.
  - Synchronization of Entity factory methods was modified:
    - AbstractFactory:
      - getObject: synchronization by cache was added;
    - EntityImplFactory:
      - executeDelete, executeInsert, executeUpdate, loadObject: 
        synchronization was removed.
  - FLGen was updated: synchronization of Entity factory methods was modified:
    - Factory generation was updated: executeDelete, loadObject: 
      synchronization was removed.
  - ImplObjectManager was updated:
    - prepareSQLStatement: synchronization was removed.
  - JDBCAccessor was fixed for Oracle database to save russian letters to
    String (LONG VARCHAR).
  - RMIClusterManagerImpl.unregisterRMIClusterSupport() was updated: logging
    was added.
  - Callbacks were added to TransactionalAction (see API reference for details):
    - commited;
    - rolledback;
    - rolledbackDueException;
    - rolledbackDueError;
    - rolledbackDuringCommit;
  - Fixed java.lang.NoClassDefFoundError: antlr/ANTLRGrammarParseBehavior. This
    error was raised if OQL query has syntax error. Classes were added to
    - antlr.AlternativeElement
    - antlr.ANTLRGrammarParseBehavior
    - antlr.ANTLRParser
    - antlr.ANTLRTokenTypes
    - antlr.DefineGrammarSymbols
    - antlr.FileLineFormatter
    - antlr.GrammarAnalyzer
    - antlr.LLkGrammarAnalyzer
    - antlr.MakeGrammar
    - antlr.Tool$1
  - Fixed datasource closing: 
    ru.novosoft.jdbc.pool.ConnectionPoolWithQueue.close() method.
  - Fixed type code storing. FL 4.6.1 does not store entity type code at all
    (typeids00 table is not filled when database is created).
  - OQL updated: OQLInterpreter.executeOQLQuery was updated to get connection
    after OQL to SQL translation.
  - "Pool.getConnection.timeout" property was added to set timeout in seconds
    for getConnection() if connection pool size amounts to limit size. Read
    %FL_HOME%/doc/howto/FLInitialization.txt for details.
  - FLGen update: "flgen.min.length" model property was added to Attribute
    properties. Now it used to generate min length of VARCHAR type declaration
    in *.create SQL scripts for Informix database.
  - Fixed inconsistency in SQL types for primary key and type code between
    entity0 and other tables for Informix database.
  - Fixed getExtent for Entity type.
  - Security features were removed from FL. ProtectedEntity, EntityUser,
    EntityUserRole classes were removed from FL model. Corresponding features
    were removed: 
    - classes:
      - com.novosoft.fl package:
        - DefaultEntityUserCollector
        - EntityPermission
        - EntityUserCollector
        - EntityUserParameters
        - InstancePermission
        - ObjectAccessDeniedException
    - methods:
      - com.novosoft.fl:
        - AbstractFactory:
          - checkCreate()
        - ObjectManager:
          - checkAccess(Entity entity, int permission)
          - checkAccess(String factoryName, int permission)
          - logon(String user, String password)
          - setEntityUserCollector(EntityUserCollector userCollector)
          - setSecurity(boolean security)
      - com.novosoft.fl.impl:
        - ImplObjectManager:
          - checkAccess(Entity entity, int permission)
          - checkAccess(String factoryName, int permission)
          - getRoleByName(String name)
          - getUser()
          - grantPermission(EntityUserRole role, Entity entity, int permission)
          - grantRole(EntityUser user, EntityUserRole role)
          - logon(String user, String password)
          - revokeRole(EntityUser user, EntityUserRole role)
          - setEntityUserCollector(EntityUserCollector userCollector)
          - setSecurity(boolean security)
    Now FL does not create the following tables:
    - packaging files:
      - %FL_HOME%\gen\Attributes\FL.atr
      - %FL_HOME%\gen\Attributes\FL-add.atr
  - Also removed:
    - classes:
      - com.novosoft.fl.impl:
        - PackageImplUtils
    - methods:
      - com.novosoft.fl:
        - ObjectManager:
          - createObject(String factoryName, Object primaryKey)
        - AbstractObjectManager:
          - getObject(String factory, int parameter)
          - createObject(String factoryName, Object primaryKey)
  - Packaging files were added:
    - %FL_HOME%\gen\script\flInstall.ebs 
    - %FL_HOME%\gen\model\
    - %FL_HOME%\gen\model\
  - FLGen: optimization for Informix database was added:
      - "lock mode row" (SQL query for table creation);
      - "cluster" index for id0 of entity table;
  - ru.novosoft.jdbc.pool.driver.DriverPooledConnection was updated:
    "SET LOCK MODE TO WAIT 15; SET ISOLATION TO Cursor stability" is executed
    to initialize new SQL connection. This tempropary feature by AJE request.
  - Fixed Transaction Manager. In presence of two parallel transactions, the
    shorter transactions that should have get removed, were not removed if
    the longer transaction was still active at that moment.
  - Fixed constructor of ImplObjectManager with parameter of java.util.Properties type.
  - FLGen was fixed: synchronization of 
    Factory.createProxyObject(Object primaryKey) was removed.
  - Exception handling in
    ru.novosoft.jdbc.pool.driver.DriverPooledConnectionProxy.close() method was
    fixed. Now this method does not throw SQLException if a call of 
    prepareStatement(String) raised SQLExeception but 
    connection proxy is still closed successfully.
  - Fix: 4.4.10 version has bug at ImplObjectManager.massLoad(List) (the method
    does not work at all). We apologize for caused inconvenience.
  - FL OQL module fix: attribute mapping processing at collection path in from
    clause for attributes of super class.
  - FLGen was updated: it was removed import of org.log4j.Category class at
    generated classes.
  - %FL_HOME%/doc/howto/logging.txt was updated: it was added sample of log4j
    property file to separate FL and Zebra logs.
  - Fixed FL OQL execution: complex collection path in from clause:
    OQL didn't add tables and joins for navigation by roles.
  - Mass load performance was improved: EntityImplFactory - SQL query building,
    MassLoadSupport - SQL query building and entity primary key handling.
  - New method: massLoad with pageSize argument. See FL API javadoc for details.
  - FLGen fix: fixed generation of SQL index for findReverse association with 
    many folders (classical example "Folders and Messages": Folder has
    findReverse list of Messages).
  - Fix: exception handling at mass loading of list elements was fixed.
  - FL packaging fixed: antlr.jar was added to flgenfull.jar.
  - log4j.jar was changed to original version of 0.9.0 (all our fixes was
    implemented at this log4j version, thus there is no backward 
    incompatibility). Some changes about log4j configuration were inserted at
  - FLGen and FL OQL subsystems were updated to the new Rose petal parser
     Implementation-Title: NovoSoft Petal File API,
     Implementation-Version: 0.2.1).
  - ImplObjectManager.massLoad() method was fixed: mass loading of loaded
    objects don't cause SQL query execution.
  - FLGen update: Factory.loadObject method was updated: logging of
    ObjectNotFoundException exception was added.
  - FL OQL fix: OQL query parameters binding was fixed: corrected thrown
    exception (now OQLRuntimeException instead of
  - Fixed JDBCAccessor for Informix database: setDate() and getDate() methods
    (null value case).
  - FLGen update: model attribute property was added to select string attribute
    setter behavior: truncate or throw exception if too big string is set.
    Read %FL_HOME%\doc\hoto\model_flgen_attributes.txt for details.
  - FLGen fix: weak reference: entity deleting was fixed.
  - FLGen update: generation was added for weak association with "0..*"
  - Fix: Connection Pool refresh was added to restore connections to database
    after connection has been lost.
  - Fix: MSAccess database: Java byte type mapping: now OQL/SQL queries for
    negative values work.
  - It was added support of Informix database.
  - Logging of next SQLExcepion (SQLException.getNextException()) was added.
  - Logging was added in Connection proxy (DEBUG level).
  - TransactionalAction: logging level of message about started rollback is
    changed from INFO level to WARN one.
  - FL OQL: methods to execute OQL queries without parameters were added.
  - com.novosoft.fl.OperationException was changed to runtime.
  - Added logging for classes of com.novosoft.fl.jdbc.fltxn package.
  - FLGen: it was added property to generate/don't generate index on name
    attribute. Read %FL_HOME%\doc\howto\generation.txt for details.
  - ImplObjectManager.findReverse was updated: direct PreparedStatement usage
    was changed to FL JDBCAccessor usage.
  - FLGen: Fixed generation for weak reference.
  - FLGen: Added support of array type for user operations.
  - FL OQL: Fixed bug with OQL execution for MSSQL (on JDK 1.3).
  - FL RMI Cluster Manager fix: now during transaction commit notification
    exceptions from notified clients don't break notification process and are
    not thrown farther.
  - FL OQL fix: execution of queries with function defines.
  - RMI Cluster fix: entity deleting: when client1 deletes an entity and
    client2 has empty proxy (EntityImpl==null) of the same entity then
    NullPointerException is raised on the client2. Now it is fixed.
  - JDBC access fix for MSAccess and MSSQL: now putting of empty LONG VARCHAR
    string value ("") to database works.
  - TransactionalAction was fixed: RuntimeException is not wrapped by
    FLRuntimeException now, thus a RuntimeException which was thrown in a
    transactional action is caught at TransactionalAction and then is thrown
  - Logging was changed. Now it uses log4j. See doc/howto/logging.txt for
  - FL OQL: added support of DB2 and MSSQL databases.
  2000/08/18, FLGen:
    - Removed hot fix for MSSQL database (VARCHAR SQL type problem was resolved:
      it is enougth to uncheck "Use ANSI nulls, paddings and warnings" at
      DSN configuration).
    - Fixed generation of index on name attribute for types different from
      String type.
  2000/08/02, FLGen:
  - Added hot fix for MSSQL database (VARCHAR SQL type problem was resolved).
  - FL RMI update: Renamed RMI cluster URL property from
    "RMIClusterManager.location" to "RMIClusterManager.url" to remove confusion.
    FL RMI URL properties manual:
      RMIClusterManagerLoader uses properties:
        1. "RMIClusterManager.port" - port to create Registry.
        2. "" - name for RMIClusterManager remote object.
      See FL API documentation for details.
  - ObjectManager: it was added getExtent() method to get all factory objects.
  - SQL table for EntityUserRole: name0 column type was changed to
    VARCHAR(100) (from VARCHAR(40)).
  - Updated generation for classes: *Impl, *ImplResource, *ImplPseudoResource,
    and for Value (transient) objects: setters/getters.
  - FLBlob, FLClob update: method clone() does not throw CloneNotSupportedException
    exception now.
  - ObjectManager: removed javax.swing.table.TableModel-features.
  - FLGen: Factory and SQL resources: removed ETM-features.
  - FL OQL was updated to 4.3.1: SQL query execution was changed to use
    java.sql.PreparedStatement and FL 4.3.1 SQL parameters binding.
  - Fixed bug in resource reading at ImplObjectManager.executeSQLResource (now
    it handles not found resources correctly).
  - Fixed bugs with LONG VARCHAR (JDBC getters/setters).
  - added classes: FLSQLInput and FLSQLOutput to eliminate explicit column
    index increment (PreparedStatement argument binding, ResultSet data getting).
  - com.novosoft.fl.impl.jdbc.JDBCAccessor class was added to use database-
    depended JDBC getters/setters.
  - Added support of Java types: char, byte, short, long, float.
  - FLGen: checking for SQLWarnings was inserted.
  - OQL was added to FL release (floql.jar).
  - FLGen: Factory update method: inserted list changes heuristics.
  - New functionality: runtime switching of logging level
    (com.novosoft.fl.log.Log.setLevel(int level)).
    WARNING: it was changed properties to start logger.
             For advanced users: please, see %FL_HOME%/doc/howto/logging.txt.
  - JDK 1.1 version removed.
  - FLGen: fixed bug at FLBlob attribute generation: fetching of object: excessive
    columnCount increment.
  - FLBlob fixed: now getBytes returns null if value==null.
  - FLCluster overhead in the case of connection was closed fixed.
  - Throws of java.lang.RuntimeException are changed to
    throws of com.novosoft.fl.FLRuntimeException.
  - FL Generator 0.2.03: fixed bug at SQL resources for mass loading of
    FLBlob attributes
  - Performance improvement version
  - FL Generator was changed. Interbase is supported at this time
  - FL resources changed to support interbase
  - FL jdbc packages changed to support interbase database
  - FLGen was added to the CVS nws-fl project
  - Authorization was moved from the Entity to the ProtectedEntity class
  - Performance improvements: executing resources in the one prepared statement
    for the same factories.
  - ORACLE optimization was added. A new constructor was added
    to the ObjectManager to retreiving sql connection using properties.
  - The INFO level logger was changed. It does not check excepts property.
  - FLGen was changed to support executing resources in the one prepared
    statement for the same factories
  - The doc\gen\Attributes\FL-add.atr changes must be added to the
    application Attributes file.
  - Model should be converted using doc\gen\script\fl_4_1.ebs or
    doc\gen\script\fl_4_1_protected.ebs scripts. The first script should be
    used if application doesn't use fl authorization otherwise the second
    script should be used
  - Model should be regenerated.
  - useCount not fetched in massLoad method bug was fixed
  - FL postgres and sybase resource bug was fixed
  - Creating database was moved outside transaction
  - Generator was changed to support weak references
  - Generator was changed to support msaccess blob types
  - Generator was changed to checks factory types creation in PackageImplUtil
  - Checking of the factory types was added to the object manager initialization
  - The base EntityImplFactory was changed in executeInsert method to
    increase performance
  - ObjectNotFoundException was added
  - Added:
    1. com.novosoft.fl.FLException
       Extends java.lang.Exception and has nested exception attribute.
    2. com.novosoft.fl.FLRuntimeException
       Extends java.lang.RuntimeException and has nested exception attribute.
  - Changed:
    1. com.novosoft.fl.TransactionRolledBackException
       Now it extends com.novosoft.fl.FLRuntimeException
    2. com.novosoft.fl.TransactionalAction
       Thrown TransactionRolledBackException has nested exception to save stack trace.
  - Warning logging was added to the TxClusterImpl
    for working out in detail a problem
  - Method TransactionalAction.execute(int count,...) was added
  - MissingResource Logger bug was fixed
  - OQL was added to the CVS
  - EntityImpl deletion outside Cluster was fixed
  - Commented old style object locking code was removed
  - getSQLConnection method in the ImplObjectManager & ImplObjectManagerResource
    was changed to fix a problem with getting connection
  - FLGen: FLBlob generation was fixed
  - FLGen: java.util.Date attribute generation was fixed
  - CVS fix
  - New generator binary jar
  - FLBlob, FLClob was moved from the com.novosoft.fl.impl to the
    com.novosoft.fl package
  - Class com.novosoft.fl.Utils was added to fix Collections.subList method
    which was supported by the classes.
  - Logging service supports level inclusion now
  - Logging service doesn't implement deprecated java classes
  - Using com.sun.swing classes insted of javax.swing was fixed
  This is a major release and may contain incompatibilities 
  with previous versions. The following changes were introduced:
  - The fl now uses standard collection classes.
    o for JDK 1.1 version
    o java.util for JDK 1.2 version
  - The table model interface is now taken from javax.swing package.
    JDK 1.1 users should use swing 1.1.* distributions.
  - Transaction interfaces were moved to com.novosoft.fl.transactions
  - Java generator is introduced.
  - Model format is changed.
  - Tested optilistic locking was introduced.

Shareware & Software Collection Online Backup Handy Password manager Office Backup utility RTF TO HTML, PDF, XML Web Site load, stress and perfomance testing