|
|
|
28 December, 2003. The optimized SQL builder uses correlated
sub-queries to retrieve the leaf children of a non-leaf node in the same query. This should speed up the application overall. Unfortunately, this feature is not supported on Mckoi, HSQL, or Oracle versions earlier than 8.1.6.
|
|
|
|
|
26 December, 2003. Two new tools, UdmSync and RenditionGenerator, are available in the zerocode.tools package.
|
|
|
|
|
23 December, 2003. The meta-template family called
betterSample has been enhanced to provide a letter-based search ribbon at the top of each list.
|
|
|
|
|
20 December, 2003. A FreeMarker code fork is now included into
the zerocode.jar. As a result of this, zeroCode no longer needs to distribute freemarker.jar, separately.
More details are available in the freemarker extensions help file
available in the zeroCode Design Environment.
|
|
|
|
|
19 December, 2003. The UDM and action sequence nodes now have one more SQL selection criterion, for choosing those records in the node's table that have at least one record in an auxiliary table accessible via a foreign key. This shows, for example, as an option in the "advanced matching" section of the SQL editing wizard
that you get to see in step 3 of adding a new UDM
node.
|
|
|
|
|
18 December, 2003. zeroCode now provides expression support for built-in functions string.replace and
string.replaceAll. Look up the expression help guide
for more details.
|
|
|
|
|
16 December, 2003. The CSV data now supports the
MIME type "text/comma-separated-values". The servlet now takes an additional optional parameter named configFile, that specifies the offset of the application's configuration file with respect to the root directory. If not specified, of course, the value defaults to config/config.txt. This enables
zeroCode to share the same directory structure across multiple apps, with varying config files.
|
|
|
|
|
02 December, 2003. The mail data port now supports the IMAP protocol, including the retrieval of folder names.
|
|
|
|
|
18 November, 2003. When a UDM is verified,
zeroCode now corrects foreign key deref errors. In other
words, if a foreign key is marked as using a particular deref column, and that deref column doesn't exist any more in the database, we now warn about it and recompute the deref column.
|
|
|
|
|
17 November, 2003. The filter editing wizard
earlier used to run out of memory with large schemas, because
zeroCode was allowing joins across arbitrary column pairs. (Such joins are needed in unstructured database schemas or those from legacy systems.)
zeroCode now provides a radio button pair for the user to select whether such join terms must be allowed, and we show those terms if the user chooses it. This way, the memory penalty is incurred only when such a large number of choices is needed.
|
|
|
|
|
16 November, 2003. zeroCode has now incorporated the
"betterSample" meta-template into the base zDE distribution.
The JavaScript pagination code has been modified to support multiple paging nodes in one UDM.
|
|
|
|
|
13 November, 2003. When creating a blank database for a new site, if an error is encountered, we now show the DDL statement that caused the error.
|
|
|
|
|
09 November, 2003. When a page is served that does not have a UDM backing it, we now include an extra packet in the data model for the page, rooted at a value named request__data:
request__data
userAgent The user-agent string from the HTTP header
pageName The name of the page (i.e., the part of the URI following the last slash)
fullUri The full request URI
uriOffset The part of the request URI following the servlet prefix
|
|
|
|
|
02 November, 2003. The SQL schema parser now allows '$' and '#' characters in column names. The Oracle documentation says that these characters are allowed, although their use is "strongly discouraged."
|
|
|
|
|
17 October, 2003. When a date/time field of an add UDM is marked with extended type "time only",
zeroCode now does a better job at trying to parse the submitted time in a few different formats.
|
|
|
|
|
12 October, 2003. Under Jetty, zeroCode now shows a better HTML preview, including the target site's JavaScript and stylesheets. This is accomplished via a default action in the ZdeRequestHandler code.
|
|
|
|
|
07 October, 2003. The zeroCode engine now recognizes a special parameter named page__number__nn, specifying the page number corresponding to the list node with id nn. This is needed to support multiple paginated list nodes in the same display page.
|
|
|
|
|
06 October, 2003. Two new FreeMarker functions have
been added: , stringLib.lowerCase() and stringLib.upperCase(),.
|
|
|
|
|
05 October, 2003. When a blob value is being served as part of a page, it wasn't being HTML-escaped even if the 'html-ize' checkbox was checked.
zeroCode now HTML-escapes it, but only if its extended type is set to 'text/plain'.
|
|
|
|
|
03 October, 2003. zeroCode now has FreeMarker functions to look up a FreeMarker list for records whose fields match a given value. See the FreeMarker extensions documentation (in the zDE help menu) for
more details.
|
|
|
|
|
17 September, 2003. When checking the UDM for consistency (just before generating HTML), zDE would show lots of warnings related to foreign key retrieval, for those deref nodes whose foreign keys were not marked for retrieval. These warnings (for foreign key derefs only) are now removed.
|
|
|
|
|
07 September, 2003. A new statistics-reporting data port is available for tracking run time resource usage (time and memory) of the application.
|
|
|
|
|
27 August, 2003. zeroCode now supports sequences in PostgreSQL databases. The code is refactored so that
zeroCode now has two separate classes, OracleSequenceKeyGenerator and PostgresqlSequenceKeyGenerator, to provide the necessary SQL.
|
|
|
|
|
23 August, 2003. If a UDM's attribute nodes correspond to non-existent database columns (e.g., because of schema changes), the UDM tree now shows those nodes in red.
|
|
|
|
|
17 August 2003. The default log size of the application is now limited as follows. Each log file can grow to no more than 250k, and in a given run, the application will produce no more than 100 such log files, amounting to a maximum of 25 MB. When the current log file grows beyond 250k, it is automatically "rolled over", i.e., renamed to include a time-stamp. (This feature had existed earlier.) In addition, if the application has created more than 100 log files, the oldest of them is deleted.
|
|
|
|
|
13 August, 2003. The UI for the database schema discovery mechanism
has been improved (in the application creation page) to show the available databases and catalogs, and allow the designer to choose the appropriate one.
The necessary JavaScript logic for db-vendor-specific
behavior has also been added.
|
|
|
|
|
12 August, 2003. When a Microsoft SQL Server database is queried for its schema, it returns the names of user-defined data types rather than SQL data types for columns. The Schema object
has now been modified to include a workaround for getting the actual data types instead of user-defined ones in such cases.
|
|
|
|
|
11 August, 2003. The code base has been modified
specifically, Application, GenericConnectionPool and GenericDbConduit) so that the database connection is not opened until the first time that client code asks for either a connection or database metadata. This accommodates needs where the application accesses multiple databases in on-line or off-line modes, and wishes to not access one or more databases when in off-line mode.
|
|
|
|
|
08 Aug, 2003. The generic conduit now accommodates for the Mckoi limitation concerning select max. So when using a Mckoi database, instead of using a select max query for generating primary keys, it now uses a slight variant that is much more efficient under
Mckoi.
|
|
|
|
|
04 July, 2003. The zeroCode Runtime Engine does not respect the
'html-ize' option
for a blob field. In other words, if a data value
retrieved from a data port has a blob data type, the zRE
does not pay attention to the html-ize option, and
simply returns the raw blob content with no additional
processing. This is not always desirable, obviously. But
changing this behavior can have a potentially severe
effect on all the single-value UDMs you may have
currently deployed.
Therefore, we have a workaround: a new pair of
FreeMarker functions, stringLib.htmlEscape and
stringLib.htmlUnescape. See the FreeMarker documentation
online for details.
|
|
|
|
|
04 July, 2003. The app inspector now uses a template named appInspector.html (if
available) to display each entry. This feature can be
exploited to build better app inspector displays.
|
|
|
|
|
08 June, 2003. The
recent addition to the UDM editor of drag-and-drop
node moving had considerably increased the
load time for large UDM trees, because of JavaScript
speed. Most of this computation is now moved to the server
side, so the UDMs should now load faster.
|
|
|
|
|
05
June, 2003. The second step of the new
application creation wizard now includes a 'show build progress' check box. Unchecking this box will inhibit the incremental progress display in the next page.
|
|
|
|
|
13
May, 2003. The UDM editor now allows moving UDM nodes via drag-and-drop, very similar to the functionality in the action sequence editor. Consequently, the UDM editor tool bar no longer displays the 'move up' and 'move down' buttons.
|
|
|
|
|
12
May, 2003. The action unit addition wizard now presents a little better UI when erroneous expressions are entered.
|
|
|
|
|
|
The zDE filter creation process now allows
you to use the 'in' and 'not in' operators.
|
|
|
|
|
30
April, 2003. You can now create auto pages for all databases, not just the primary one. After you have added a new database to your application, choosing the 'rebuild auto UDMs' menu item now brings up a page in which you can specify the database for which you want to
(re)build the auto pages.
Caveat: After adding a database, you must build your auto pages and then restart the application for the changes to take effect.
|
|
|
|
|
29 April, 2003. A new property,
inhibitPreparedStmtReuse, is provided to cater to Progress and similar databases whose support for prepared statements is flaky. Setting this parameter causes the engine to build the prepared statement on every database access. This can be slow, but there's
little else we can do with such databases. Specifically, for the application's primary database, this parameter would be set via database.db.inhibitPreparedStmtReuse = true in
config.txt.
|
|
|
|
|
27 April, 2003. There is now a "compatibility mode" for older JDBC drivers, such as the JDBC-ODBC bridge, that don't allow positioning of result sets. To use this mode with a particular database, you would include the parameter database.database name.needsOldJdbc = true in your application configuration file
config.txt. Specifically, for the application's primary database, this parameter would be set via database.db.needsOldJdbc = true in
config.txt.
|
|
|
|
|
14 April, 2003. The default request handler (UdmRequestHandler) now includes support for the localization
model. See the accompanying note describing localization.
|
|
|
|
|
08 April, 2003. You can now use a
rudimentary 'macro expansion' in the application's
configuration file, config.txt. For example, you can
define
myFile = /home/zerocode/ZeroCode/udmBuilder/sharedData
and the configuration parameter myFile will contain the expanded form, with the actual value of the siteRoot parameter substituted for the occurrence of the string
/home/zerocode/ZeroCode/udmBuilder. Note, though, that we don't do any dependency checking, so you can't expect multiple expansions, i.e., you can't define the value of one parameter x in terms of another parameter y which in turn depends on a third parameter z.
|
|
|
|
|
03 April, 2003. The zDE JDBC drivers now live in a subdirectory called jdbcDrivers under
ZeroCode/javaCode/lib. This makes it easier to distribute the zDE, but might have some impact on existing sites.
|
|
|
|
|
|
02 March, 2003. The pagination.js file contained a bug – an assumption that the paging ribbon is included inside a form. It used this assumption to access the textbox (for typing the page number to go to) via the doument.elements collection.
You can now access it via document.getElementById, thus removing the dependence on this assumption.
|
| |
|
|
|
01 March, 2003. The Application object now registers a shutdown hook, and when the hook is invoked, closes all open database connections before shutting down. This enables clean shutdown for embedded databases like Mckoi and hsqldb.
|
| |
|
|
|
28
February, 2003. The action sequence editing UI in the zDE – specifically, the node display page – is now a little cleaner. |
| |
The list of available meta-template families is displayed in
a dropdown list in the standard UDM creation page. A
similar dropdown is displayed when custom HTML is to be
regenerated. |
| |
|
 |
20
February, 2003. zeroCode now has the ability to create an evaluation version of the zDE. This includes the ability to 'hard-wire' some configuration parameters. |
|
|
 |
17
February, 2003. The 'create new site' page now allows new database creation on any of Oracle, PostgreSQL and Hypersonic SQL engines. Hypersonic SQL is supported only in embedded mode. |
|
|
 |
16
February, 2003. The 'create new site' page now sports a new look, and accommodates the new ability to reverse-engineer an existing database. |
|
|
 |
06 February, 2003. The connection pool's expireConnections method
interrupts any threads that have held a connection for longer than 10 minutes, and discards that connection (after making a log entry to that effect). Of course, this runs the risk of running out of connections if we have runaway threads. |
|
|
 |
27 January, 2003. The old zcSiteServer shell script for site start/stop
has been replaced with a Perl script. When invoked to start the site, this script looks first for Jetty, then for Resin and finally for Apache. This script has the added advantage that it determines the site root on the fly. This means that, to move a site to another location, you just need to tar it up and untar it at the destination, and all you need to do to start the site is type the command
'zcSiteServer start'. |
|
|
 |
27 January, 2003.
The page-level security code now caches the accessible URIs in the session. This speeds up the page display significantly when accessing sites with page-level protection. |
|
|
 |
14 January, 2003. The standard UDM creation process is now corrected to include the table name properties in the database nodes, instead of relying on the fully-qualified package name as it did before. |
|
|
 |
13 January, 2003. An action sequence can now have upto 16 parameters. |
|
|
 |
08 January, 2003. UDMs now accept upto 18 parameters. |
|
|
 |
08 January, 2003. There is now a data port that can be used for invoking stored procedures in databases. |
|
|
 |
07 January, 2003. The SQL parser now accepts most SQL reserved words (such as comment, check and sequence as column names. It also allows the underscore as the first character of a column name. |
|
|
 |
07 January, 2003. The filter editing page (the one for adding new terms to a filter) is now a little more user-friendly, with DHTML-based drill-downs from tables to columns to criteria for the
column. |
|
|
 |
07 January, 2003.
The filter editing page now allows arbitrary joins -- you can create a join term specifying any two columns of the database, not just foreign and primary keys. |
|
|
 |
06 January, 2003. zeroCode has a command processor data port that can be used to execute shell commands from within the application. The help file shows how to use it. |
|
|
 |
29 December, 2002. In an action sequence's unit, if it is a 'put' action, the read-only attributes of the data type are marked as read-only and do not have associated check boxes shown. On the engine side, this meant extensions to the data port descriptor format, with new XML properties added for declaring the read-only-ness of attributes, and cleanups in the data port descriptor implementation, with two new classes (DataTypeDescriptor and AttributeDescriptor) in the Java code. |
|
|
 |
12 December, 2002. In the zDE, if a user has 'All' access to a site, s/he can now download the site. |
|
|
 |
12 December, 2002.We now have a new table in the zDE database for carrying "default nominations": When a user is created for a company (via self-registration), s/he is
automaticall y nominated for the sites specified in this table. The zdeAdmin site now includes a few pages for controlling these default nominations. |
|
|
 |
08 December, 2002. In the zDE's SQL creation/edit wizard (step 3 of node addition, step 1 of SQL editing), we now offer the ability to apply the aggregate function (sum, count,
etc.) to distinct elements only. This is done via a pair of radio buttons shown in the page. Using this feature,
you can now retrieve (for example) the number of distinct dates corresponding to sales orders, instead of the number of all dates.
|
|
|
 |
01 December, 2002. The database access mechanism uses scrollable result sets instead of the old clunky counting mechanism that was used to support older JDBC drivers. This should speed up access to paginated web pages. This required a change in the conduit template as well, but it does not cause any other user-visible effects. |
|
|
 |
22 November, 2002. When a zDE user logs out of the zDE, all the locks that she/he acquired during the session will be revoked. This should also happen if the logout occurs because of session timeout. |
|
|
 |
21 November, 2002. The zDE and the zeroCode application no longer determine their session id using the JSESSIONID cookie sent by the servlet runner. Instead, the zDE uses a cookie named zeroCode.zde, while each zeroCode application uses a cookie named zeroCode.siteName. The primary reason for this change is that a certain widely used but buggy browser always gets confused between the JSESSIONID cookies sent by different sites running on different ports on the same server, and it simply sends the same cookie to all such sites. The irritating result is that users lose their session when they switch from one site to another.
This change includes an additional benefit: The generated cookie value that these applications use is now checked for hijacking. It contains an encoding of (among other things) the IP address of the machine originating the session, so that if someone steals a valid cookie from one machine and attempts to use it from another, the attempt will fail. Note, however, that the cookie string does not expose its contents in plain text, nor does it include any indication of the user's identity. In other words, the cookie string does not betray any information that can be used by an attacker. |
|
|
 |
19 November, 2002. The TreeRetriever now recognizes an AppDebug parameter UdmClock. Enabling this will cause the tree retriever to show, in the app inspector window, the total times in milliseconds that it took for retrieving the data at each of the nodes in the tree. You can enable by accessing the URL
http://myHost/zcSite/mySite/DEBUG_HOOK?UdmClock=1 |
|
|
 |
12 November, 2002. “Non-transient” session
variables are now supported. There are now two kinds of
session variables: transient and non-transient. A
transient session variable is destroyed when the
user’s browser is closed, regardless of the
variable’s expiry time. By contrast, a non-transient
session variable lives for its entire expiry time, even
if the browser is closed. Transient session variables
are useful for tracking login sessions, while
non-transient session variables are useful for
personalization. At the implementation level, the
zeroCode application uses a single cookie to track all
transient session variables; in addition, it uses one
cookie for each non-transient session variable. |
|
|
 |
03 November, 2002. The site root need no longer be specified (via the siteRoot parameter) in the site's config file. It is now passed as the value of the Java parameter zeroCode.siteRoot in the Java command line. This makes it very easy to move a site from one directory to another, because the start/stop wrapper script zcSiteServer now discovers the path in which it lives, and uses that path as parameter. So, moving the site is simply a matter of moving or copying the directory contents, with no further changes necessary. |
|
|
|
New zeroCode sites now use Jetty as their servlet runner. The Jetty jar files are copied (really, linked) into the generated site, so there is no need for the Jetty distribution to be installed on the server. |
|
|
|
The site start/stop script for the zeroCode application now lives in the site's bin directory, not in apache/bin. This change is because we don't really depend on Apache any more, so the apache directory name is a misnomer. |
|
|
|
The generated site now includes a separate directory jdbcDrivers under stdlib, for maintaining the JDBC jar files.
|
|
|