This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information

Category: Release notes

VisionX 1.1.1 is released

We released VisionX 1.1.1 as little Thank you to our customers. Thanks for the great Feedback and for all the compliments!

The new release contains many improvements and solves some ugly problems.

The details

  • Application reload in Browsers

    It is not necessary to clear the Java or Browser cache. The application now reloads automatically.

  • Data export

    The simple export of records now creates valid CSV files. Simply open it with Excel or other Office suites.

  • Install the database without freeze

    VisionX had a problem with opened database connections, because the installation waits until all resources are freed. In the current release, VisionX closes all opened connections during installation. The database installation now runs smoothly.

  • Translation update

    We updated the English translation.

  • Tomcat Settings

    If you reused a Tomcat setting, the port is set to 80. Now the stored port is used.

  • User Management

    Now it is possible to customize the User Management screen.

  • Form screen validation

    If you close a form screen but not all required fields are filled, you get only one information dialog.

  • Default table sort

    If you sort a table with different columns and different sort orders, it is saved now.

  • Edit data table

    We found a potential freeze during screen update and changed the display of the data type.

  • Action editor

    A value change command does not create a new insert command anymore.

Have fun with this fantastic release.

JVx 0.9 beta-2 is available

It is available from the project page.

What’s New?

The complete list of changes can be found here.

  • Default Database (CoC)It is now possible to configure multiple db datasources via config.xml
    <?xml version="1.0" encoding="UTF-8"?>

    <application>
    <securitymanager>
    <class>com.sibvisions.rad.server.security.DBSecurityManager</class>
    </securitymanager>

    <datasource>
    <db name="default">
    <url>jdbc:oracle:thin:@localhost:1521:mydb</url>
    <username>user</username>
    <password>password</password>
    </db>
    </datasource>
    </application>

    If the DBSecurityManager does not define a specific datasource, the datasource with the name "default" is used.

  • Quoting in DBAccessDBAccess supports case sensitive database access. To enable the feature, call
    setQuoting(true);

    on your DBAccess instance.

  • Custom SessionManager and ObjectProviderIt was possible to use a custom ObjectProvider but it was not possible to extend the DefaultObjectProvider. Now this limit is gone. Additional it is now possible to use a custom SessionManager and extend the DefaultSessionManager.

    Configure the objects in your server config.xml like this:

    <server>
    <sessionmanager>com.sibvisions.AnotherSessionManager</sessionmanager>
    <objectprovider>com.sibvisions.AnotherObjectProvider</objectprovider>
    <server>
  • Server Side TriggersOur DataBooks now supports specific events like before insert or after delete. The server side storage did not have this events, so you had to overwrite the data manipulation methods to call your business logic or to change the default behaviour. That was not very cool.

    We have implemented a very powerful feature, with which you have full control of your data sent to the data tier. Do you know database triggers?
    Now you have the same power in your storages.

    A short example:

    public void getUsers()
    {
    DBStorage dbsUsers = new DBStorage();
    dbsUsers.setDBAccess(getDBAccess());
    dbsUsers.setFromClause("V_USER_USERS");
    dbsUsers.setWritebackTable("USERS");
    dbsUsers.open();

    dbsUsers.eventBeforeInsert().addListener(this, "doEncryptPwd");
    dbsUsers.eventBeforeUpdate().addListener(this, "doEncryptPwd");
    }

    public void doEncryptPwd(StorageEvent pEvent)
    {
    IBean bn = pEvent.getNew();

    bn.put("PASSWORD", AbstractSecurityManager.getEncryptedPassword(
    SessionContext.getCurrentSessionConfig(),
    (String)bn.get("PASSWORD")));

    pEvent.setNew(bn);
    }

    Use the event handling as usual.

  • Flat POJO support for StoragesInstead of using the dynamic property access via IBean, it is possible to work with POJOs:
    public void doEncryptPwd(StorageEvent pEvent)
    {
    User user = pEvent.getNew(User.class);

    user.setPassword(AbstractSecurityManager.getEncryptedPassword(
    SessionContext.getCurrentSessionConfig(),
    user.getPassword()));

    pEvent.setNew(user);
    }

    You can work with every useful POJO because the storage mapps only available properties to the POJO.

  • Useful bugfixes

We look forward to your reviews ;)

JVx 0.9 beta-1 is available

Check out our new JVx version. It is available from the project page.

What's in the current beta?

The complete list of changes can be found here.

Some features, however, at this point:

  • Introduced DBCredentials and DataSourceHandlerIt is now possible to configure multiple db datasources via config.xml
    <?xml version="1.0" encoding="UTF-8"?>

    <application>
    <securitymanager>
    <class>com.sibvisions.rad.server.security.DBSecurityManager</class>
    <database datasource="mydb" />
    </securitymanager>

    <datasource>
    <db name="mydb">
    <url>jdbc:oracle:thin:@localhost:1521:mydb</url>
    <username>user</username>
    <password>password</password>
    </db>
    <db name="masterdb">
    <url>jdbc:derby://localhost:1527/masterdb</url>
    <username>master</username>
    <password>master</password>
    </db>
    </datasource>
    </application>

    and use the configured security manager connection in the Session:

    IConfiguration config = SessionContext.getCurrentSessionConfig();

    dba = DBAccess.getDBAccess(DBSecurityManager.getCredentials(config));
    dba.open();

    or any connection, by name:

    IConfiguration config = SessionContext.getCurrentSessionConfig();

    DBCredentials cred = DataSourceHandler.createDBCredentials(config, "masterdb");

    dba = DBAccess.getDBAccess(cred);
    dba.open();

    It is still possible to use the old configuration format:

    <?xml version="1.0" encoding="UTF-8"?>

    <application>
    <securitymanager>
    <class>com.sibvisions.rad.server.security.DBSecurityManager</class>
    <database>
    <driver>org.hsqldb.jdbcDriver</driver>
    <url>jdbc:hsqldb:hsql://localhost/demodb</url>
    <username>sa</username>
    <password></password>
    </database>
    </securitymanager>

    You can create DBCredentials or read the config programatically, as it was with JVx 0.8.

  • Introduced AbstractCachedStorageThe AbstractCachedStorage is the new base class for all IStorage or ICachedStorage implementations. It implements the metadata caching and offers simple export functionality. With this class it is easy to develop new storages.
  • Introduced AbstractMemStorageThe AbstractMemStorage extends the AbstractCachedStorage and offers a MemDataBook on the server-side. With this class it is very simple to create storages with data kept in memory. You don't need a special backend, e.g. you can use a List to fill the storage. Our TwitterStorage uses this storage.
  • DBAccess supports pre-configured java.sql.ConnectionCreate a DBAccess instance with a pre-configured connection, e.g.
    Connection con = getJNDIConnection();

    DBAccess.getDBAccess(con)

  • XmlNode performance tuningOur XmlNode allows XML access with following syntax:
    XmlWorker xmw = new XmlWorker();
    xmnRead = xmw.read(new FileInputStream("example.xml"));

    xmnRead.setNode("/archive/element(1)/user", "xml");
    xmnRead.setNode("/archive/new/element", "car");

    The class offers powerful and simple XML handling - check it out!

  • Bugfixes and Test cases

We look forward to your reviews ;)

JVx 0.8 released

JVx 0.8 ist out now!

We put much time and work into the new release. It contains almost 100 improvements!

But before we go into the details, it should be mentioned that JVx is now hosted on SourceForge. This step was particularly important to us, in order to be able to develop together with our Community.

Our Forum contains detailed instructions for working together.
We appreciate any help.

Download JVx 0.8 here

What's new?

  • API changes
    • We removed set/getTableColumnNames, set/getTreeColumnNames, set/getEditorColumnNames and introduced ColumnView. Now it is possible to set a column view per UI control e.g.: ITable, ITree, IEditor, null (ALL)

      Old:

      rdbInvoice.getRowDefinition().
      setTableColumnNames(new String [] { "POS", "PRICE"});

      New:

      rdbInvoice.getRowDefinition().
      setColumnView(null, new ColumnView("POS", "PRICE"));
    • DBAccess has now a static method, setAutomaticLinkColumnNameTranslation, to translate the automatic link column names into a user-defined name.Default:
      tmpAutoLinkColumnNames.put("*_id", "*");
      tmpAutoLinkColumnNames.put("*_ID", "*");
    • Changed, automatic, visible column detection from case insensitive to case sensitive, for compatibility reasons!Old:
      setDefaultIgnoredColumnNames("*_ID");

      New:

      setDefaultIgnoredColumnNames("*_ID", "*_id");

      Default:

      "*ID", "*id", "*_ID", "*_id", "*_INTERN", "*_intern"
    • Renamed countRows to getEstimatedRowCount in IStorage
  • MetaData handlingReduced client/server requests,
    Reduced creation loops on server side,
    Caching for sub storages,
    Fixed Nullable column detection,
    Client Cache roles,
    Label detection,
    Split Client and Server MetaData usage
  • SerializerUniversalSerializer is now the standard serializer,
    Support for async serialization with new TypeCache,
    Bean packages unified,
    New init method for ISerializer,
    The serializer name is now included in the connection properties
  • JNDI supportServer is now available via JNDI or Singleton
  • DB supportHSQLDB driver is now registered,
    HSQLDB locking mechanism fixed,
    Derby locking support,
    close open statements,
    Check constraint detection with 'OR', 'AND', 'IN',
    Automatic Link Column Name detection works now DB independent,
    Fetch optimization (reduced method calls),
    BigDecimal DataType contains always a BigDecimal - DB independent
  • SecurityDifferend Password algorithms (SecureHash),
    Automatic Security detection of lifecycle objects,
    XmlSecurityManager now supports more than 1 User
  • Smaller changes and BugfixesAll details are documented in our Support System or the ChangeLog