Servoy 3.5.2

We announce the immediate availability of Servoy 3.5.2

Make a backup of your current Servoy installation (directory and database) before installing.

This version will be available shortly through auto update for users of versions later than 3.5 b2 (check via help menu → check for new version)

Changes
[new] new documentation
[new] text orientation can be specified in solution settings

[enh] workaround to enable Servoy Smart Client to work with an upcoming popular operating system
[enh] possibility to override error and page expired web client page, see below
[enh] optional parameter “language” to the application.showI18NDialog(…)
[enh] web client support for navigator styles, see below
[enh] added child nodes sorting support to DBTreeView bean, see below
[enh] sort command will also be called for labels in table view components without a data provider

[fix] Servoy windows (smart client/help/editor) are now able to remember their last location and state (maximized or not) correctly even when using multiple monitors/displays
[fix] standard servoy modal dialogs (not servoy user dialogs) will always appear on top of their parent window
[fix] dialog bounds are saved in .properties file only if they are needed
[fix] when creating a new global method while being on a module form, the global will be created in the module instead of in the main solution
[fix] print preview from web client did not work in Safari, at least Safari for Windows
[fix] in the onLoad method for instanced forms, application.getMethodTriggerFormName() did not work correctly (gave back the name of the initial form not the instanced one)
[fix] printing a script from developer
[fix] in Sybase 10, the string_rtruncation option has a deafult value of ON, whereas =< Sybase 9 had it set to OFF by default. This setting indicates to generate an exception when using the CAST command and a certain situation occurs. In Sybase 9 and before, the exception would be ignored by default, in Sybase 10 it’s raised. Due to this, Sample Data imports can fail in Sybase 10
[fix] exception when the primary key is a stored calculation
[fix] checkbox field not properly initialized when database value is null
[fix] avoid refresh when expanding/collapsing DBTreeView
[fix] multi developer deadlock fix
[fix] web client shows disabled tabs incorrectly
[fix] editing of large tableviews: selection had strange behavior
[fix] when calling readonly(…) while in edit mode, listview would stay in edit mode
[fix] image media field in tableview did not fire the onAction method
[fix] support to move files over multiple filesystems with file plugin
[fix] security.getUserName(…) will only return the current user name if no arguments are given; null argument will return null
[fix] exception when executing calculation that fails
[fix] error in creating repository on mysql5 database, switching to mediumtext when column is longer than 255 (same behaviour as mysql4) to prevent “row size too big” error
[fix] loading a foundset with a dataset of PKs could result in a conversion type error
[fix] unrelate(…) on related foundsets kept the sql join
[fix] error in printing when subsummary has more than three GroupByFields
[fix] threading problem in schedule plugin when used from batch processor

Changes in servoy_sample_crm
[enh] Removed the dialog tabpanel “workaround” - and changed all dialogs to native Servoy modal dialogs - so everything is web compatible.
[enh] Invoices with a CLOSED status are now not editable - and you are alerted when you click the “Edit” button
[enh] When you mark an CLOSED status invoice as OPEN, you can edit all the items
[enh] Added invoice status to the list of invoices displayed on the product

[chg] Removed the global functions that disabled the screen prior to the “fake” dialog calls - as they are no longer necessary with “real” dialogs
[chg] Upated the “edit” routines on all the main forms - so that checkboxes are editable in the Web Client

[fix] Updated the svy_mod solution to remove extra global methods that were no longer being referenced
[fix] Updated the global methods that opened the dialogs - there were too many arguments being passed and in the wrong order - causing strange results
[fix] Modified the svyWebCrm style to include “white” background fields - for checkboxes so they wouldn’t be colored grey after editing on contacts and invoices.
[fix] Changed sort of existing orders on products form to sort by order id
[fix] Set the navigation bar tabpanel to transparent on all the forms - to avoid the occassional grey bar on redraw of screen
[fix] Changed the date and number formatting on orders, contacts, companies to be US format - and not show the time on date fields

DBTreeView bean child nodes sorting support
The DBTreeView bean now allows sorting the child nodes through the bindNodeChildSortDataProvider(sort_column_provider) function. Use this function to set the name of a calculation. The calculation should return a string of the form . The children will be sorted on the column and in the order returned by this calculation.

Overriding error- and page expired pages
By using application.setUserProperty(…), the error page and page expired pages can now be set on a per-user basis. These properties are servoy.webclient.error.page and servoy.webclient.pageexpired.page, respectively.These override the properties by the same name from the admin page. The defaults must be set in the admin page for the user properties to work.

Style support for navigator
The default navigator can now be styled using the classes navigatornumber, navigatornext, navigatorprev, navigatorfirst and navigatorlast.
Example:

.navigatornumber
{
	font: 10pt "Arial";
}

.navigatornext
{
	display: none;
}

.navigatorprev
{
	display: none;
}

.navigatorfirst
{
	display: none;
}

.navigatorlast
{
	display: none;
}

Previous release
http://forum.servoy.com/viewtopic.php?t=9105

[new] text orientation can be specified in solution settings

This is really working, thank you Servoy.
Not applied to the Form, Navigator and toolbars (Minor Issue).
And I 'll create a feature request to have this orientation functionality to be overrided by each field/object.

How do I upgrade a solution from Servoy 3.1.7-build 411 to Servoy 3.5.2?

I would prefer to stay with Sybase 9 initially, to minimize the variables in case something should go wrong. From the instructions it appears that the only way to stay with Sybase 9 is to perform incremental Servoy updates. However, from Servoy 3.1.7-build 411 it appears that there are no more incremental updates available.

How do I make the leap from where I am to where I need to be?

Dean

Westy:
How do I upgrade a solution from Servoy 3.1.7-build 411 to Servoy 3.5.2? I would prefer to stay with Sybase 9 initially

Theoretically, you should be able to do a fresh install of 3.5.2 and use the old database with it. The repository will need to be upgraded, however - so be sure to make a backup of the database first.

svroemisse:
The repository will need to be upgraded, however - so be sure to make a backup of the database first.

Hi Sandor,

What is the suggested procedure for upgrading the repository?

Dean

The DBTreeView bean now allows sorting the child nodes through the bindNodeChildSortDataProvider(sort_column_provider) function. Use this function to set the name of a calculation. The calculation should return a string of the form . The children will be sorted on the column and in the order returned by this calculation.

Are you sure this works in 3.5.2? It still reacts as in 3.5.1 even when I added the bindNodeChildSortDataProvider(‘column_order asc’) method.
Or is there some particular moment when this method has to be set? For example before or after the loadrecords into the treeview?

Westy:
What is the suggested procedure for upgrading the repository?

Developer will prompt to perform a repository upgrade. When you click ‘yes’, it will do the rest.

Servoy Server will simply fail to launch if the repository has not been upgraded. In order to upgrade the repository, issue the following command from your Servoy Servers’ direcory:

servoy_server.bat -upgradeRepository

Servoy Server will upgrade the repository and quit. Next, you can launch Servoy Server like you’re used to.

Again, please make backups before you begin. And make sure there’s no Servoy instance running from the repository you’re upgrading.

martinh:
Are you sure this works in 3.5.2? It still reacts as in 3.5.1 even when I added the bindNodeChildSortDataProvider(‘column_order asc’) method.
Or is there some particular moment when this method has to be set? For example before or after the loadrecords into the treeview?

Indeed, there is: this should be set before setting the root nodes.

Theoretically, you should be able to do a fresh install of 3.5.2 and use the old database with it.

I just did a fresh install with the Servoy installer “database” option unchecked. Then I pasted in my Sybase 9 database folder. Then I pasted in my prior sybase_db folder and my prior servoy.properties file. When I double-click servoy_developer.jar I get the following:

java.sql.SQLException: JDBC Driver ‘com.sybase.jdbc2.jdbc.SybDriver’ not found in classpath or drivers directory : java.lang.ClassNotFoundException: com.sybase.jdbc2.jdbc.SybDriver com.sybase.jdbc2.jdbc.SybDriver

If I do the above except use the new servoy.properties file instead of the old one, then I get:

org.apache.commons.dbcp.DbcpException: java.sql.SQLException: JZ00L: Login failed. Examine the SQLWarnings chained to this exception for the reason(s).
java.sql.SQLException: JZ00L: Login failed. Examine the SQLWarnings chained to this exception for the reason(s).

What to do?

Dean

I found the solution as follows:

  1. Went to Edit/Preferences/DB Servers
  2. For each connection changed driver name

from:
com.sybase.jdbc2.jdbc.SybDriver
to:
com.sybase.jdbc3.jdbc.SybDriver

Now Servoy 3.5.2-build 515 is up and running.

Dean

Thank you Servoyians for your time and effort to release software that’s almost too much fun to work with :) !

I have an issue though with importing my 3.1.7 solution into a clean 3.5.2 install. When importing my solution into the new repository, I get this error message:

com.servoy.j2db.persistence.RepositoryException: com.servoy.j2db.persistence.RepositoryException: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ‘media_data’ at row 1

The import stops after closing the error dialog and nothing is imported.

Log file says this:

2007-10-29 21:23:57,602 ERROR [TaskExecuter[1]] com.servoy.j2db.util.Debug - Throwable
com.servoy.j2db.persistence.RepositoryException: com.servoy.j2db.persistence.RepositoryException: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ‘media_data’ at row 1
at com.servoy.j2db.persistence.p.a(Unknown Source)
at com.servoy.j2db.persistence.XMLImporter.importFromJarFile(Unknown Source)
at com.servoy.j2db.develop.i$6.run(Unknown Source)
at com.servoy.j2db.util.aq.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: com.servoy.j2db.persistence.RepositoryException: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ‘media_data’ at row 1
at com.servoy.j2db.persistence.Repository.saveBlob(Unknown Source)
at com.servoy.j2db.persistence.Repository.saveBlob(Unknown Source)
at com.servoy.j2db.persistence.p.a(Unknown Source)
… 5 more
Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ‘media_data’ at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2939)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3249)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1268)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:843)
at sun.reflect.GeneratedMethodAccessor56.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.servoy.j2db.persistence.datasource.p.invoke(Unknown Source)
at $Proxy1.execute(Unknown Source)
at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:230)
at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:230)
at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:230)
… 8 more
2007-10-29 21:23:57,602 ERROR [TaskExecuter[1]] com.servoy.j2db.util.Debug - com.servoy.j2db.persistence.RepositoryException: com.servoy.j2db.persistence.RepositoryException: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ‘media_data’ at row 1

2007-10-29 21:24:02,821 ERROR [AWT-EventQueue-0] com.servoy.j2db.util.Debug - Deleting unreferenced blobs

Servoy Developer
Version 3.5.2-build 515
Java version 1.6.0_03-b05 (Windows XP)
MySQL 5.0.27

Karel, did you adjust your max packet size in your mySQL db?

HJK:
Karel, did you adjust your max packet size in your mySQL db?

Yes I did. Max packet size is set to 64M.
Case created.

Karel,

Is it possible if you attach the solution to a case in our support system?

Rob

Rob

Have just had same issue

Debug - Throwable
com.servoy.j2db.persistence.RepositoryException: com.servoy.j2db.persistence.RepositoryException: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ‘media_data’ at row 1

trying to import a 3.5.1 solution from my MacBook to a Windows XP box with fresh 3.5.2 install.

Works OK if I use Sybase as repository but fails when Servoy trying to create the MySQL repository.

HTH

I’m still getting an error in 3.5.2 when I want to import a 3.1.7 solution with I18n. the i18n imports fails with an error.

I thought this was fixed in 3.5.2?

Anyone else?

using windows XP
Servoy 3.5.2
Sybase 10

HJK:
I’m still getting an error in 3.5.2 when I want to import a 3.1.7 solution with I18n. the i18n imports fails with an error.

What is the error you’re getting?

Rob

Karel Broer:
I have an issue though with importing my 3.1.7 solution into a clean 3.5.2 install. When importing my solution into the new repository, I get this error message:

com.servoy.j2db.persistence.RepositoryException: com.servoy.j2db.persistence.RepositoryException: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ‘media_data’ at row 1

Karel,

The fix with the mysql5-dialect in 3.5.2 was unfortunately not complete.
The media_data column in the servoy_media table was created as “blob” in stead of “longblob”. When you insert larger images it will fail with the reported error.

A workaround is to create the repository using Servoy 3.5 (not 3.5.1) and upgrade the repository using 3.5.2.

This will be fixed in release 3.5.3.

Rob

rgansevles:
A workaround is to create the repository using Servoy 3.5 (not 3.5.1) and upgrade the repository using 3.5.2.

Thank you Rob for your fast response and a workaround tip. Setting the media field to LONGBLOB did fix the issue indeed. :!:
Installing 3.5 is not nessecary, changing the media_data field type in MySQL Administrator to LONGBLOB also works. :)

This will be fixed in release 3.5.3.

Perfect! This is one of the reasons why I love Servoy!

rgansevles:

HJK:
I’m still getting an error in 3.5.2 when I want to import a 3.1.7 solution with I18n. the i18n imports fails with an error.

What is the error you’re getting?

Rob

this is the error:

2007-08-01 21:52:19,605 ERROR [AWT-EventQueue-0] com.servoy.j2db.util.Debug - Throwable
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
	at java.lang.AbstractStringBuilder.setLength(Unknown Source)
	at java.lang.StringBuffer.setLength(Unknown Source)
	at com.servoy.extensions.plugins.file.FileProvider.js_readTXTFile(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at com.servoy.j2db.scripting.JSApplication.js_readTXTFile(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:334)
	at org.mozilla.javascript.ScriptRuntime.call(ScriptRuntime.java:1254)
	at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:2031)
	at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:94)
	at com.servoy.j2db.scripting.e.call(Unknown Source)
	at org.mozilla.javascript.ScriptRuntime.call(ScriptRuntime.java:1254)
	at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:2031)
	at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:94)
	at com.servoy.j2db.scripting.e.call(Unknown Source)
	at org.mozilla.javascript.ScriptRuntime.call(ScriptRuntime.java:1254)
	at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:2031)
	at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:94)
	at com.servoy.j2db.scripting.e.call(Unknown Source)
	at com.servoy.j2db.develop.debugger.k.a(Unknown Source)
	at com.servoy.j2db.develop.debugger.k.access$100(Unknown Source)
	at com.servoy.j2db.develop.debugger.k$2.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)