ChangeNotificationCenter

The ChangeNotificationCenter provides for a way to watch for changes in EOs. The main use of this would be to be able to safely keep cached/computed/derived values that get cleared once out of sync.

Download changeNotificationCenter.tar.gz - (February 2, 2005)

InSubQueryQualifier: WHERE a IN (SELECT x FROM A ...)

Qualifier that translates into generic subqueries.

Download inSubQueryQualifier.tar.gz - (February 1, 2005)

This code is dependant on the custom qualifier support code also available from this page.

ExistsInRelationshipQualifier: WHERE EXISTS (SELECT 1 FROM A WHERE ...)

Qualifier to check for the presence of objects matching a given qualifier in a to-many relationship. May be combined with an EONotQualifier to insure the absence of matching objects.

Download existsInRelationship.tar.gz - (January 17, 2005)

This code is dependant on the custom qualifier support code also available from this page.

FetchSpecBatchIterator: memory stable operations on very large data sets

Iterator to lazily instantiate batches of objects matching a given fetch specification. Allows for memory stable operations on very large data sets.

Download fetchSpecIterator.tar.gz - (January 16, 2005)

This code is dependant on the InSetQualifier code also available from this page.

InSetQualifier: WHERE a IN (x, y, z)

Custom qualifier to match objects according to the values in a provided list. May serve as starting point for writing custom qualifiers.

Download inSetQualifier.tar.gz - (January 16, 2005)

This code is dependant on the custom qualifier support code also available from this page.

Command line deployment of WOLips projects

Deployment of WOLips projects. Ant tasks and scripts for command line compiling. Complete workflow from CVS checkout to split installation.

Does NOT yet support WOLips' classpath containers and newer features.

Download install.tar.gz

BestMatchQualifier: WHERE a IN (SELECT MAX(x) ...)

Custom qualifier to match objects which for a given attribute show the value closest to a specified limit. E.g. the latest effect date before today.

Download bmQualifiers.tar.gz - (January 16, 2005)

This code is dependant on the custom qualifier support code also available from this page.

Support methods for custom qualifiers

A qualifier is the EOF control layer representation of a criteria. This object usually provides for in-memory qualification of object. Often a qualifier is paired with a support class in the access layer in charge of its SQL representation.

The download contains abstract implementations of both objects. They serve as super-classes to custom qualifiers. Mine and hopefully yours.

Download customQualifiers.tar.gz - (January 16, 2005)

Model-based coercion of fetch specification bindings

Did you notice how WebObjects 5 is less forgiving than previous versions about what bindings you pass to a fetch specification? You might be seeing errors that tell you to apply a formatter to a binding even though the very same code worked before conversion to WebObjects 5.

Download fetchCoercion.tar.gz

Client side backtracking: coping with the browser’s back button

This code snippet provides ways to handle client-side backtracking (the evil back button).

The main problems related to backtracking are:

The first problem is in fact caused by a more general problem: a component always exits with only one state, i.e. the latest one. The user may however backtrack to a cached page that matches a previous state: showing components that should be hidden, displaying an earlier batch of a display group,... .

The second problem is closely related, but differs by the fact that the former state of the component is permanently lost in that the moving to the new state has non reversible effects like deleting from a database.

Download backTrackToo.tar.gz

Server side backtracking: your very own back button

This code snippet provides an implementation of a server-side backtracking mechanism similar to the browser's back button.

This allows for a more graceful, i.e. application like behavior, where backtracking brings up the previous page instead of a previous state of the current one. E.g. if a form validation error is sanctioned by redisplaying the form augmented with an error message, the browser back button would return to the form as it was before validation. Server-side backtracking would bring up the page that let to the form.

Download backTrack.tar.gz

Audit trail and object history

This code snippet provides a generic implementation of two related functionalities:

The idea here is to set the timestamp and create the archived data object as soon as an object needing such services is modified. This approach has several advantages over implementations that do these operations shortly before saving the editing context or within the database. Most notably, only objects requiring these service suffer from the overhead caused these operations. Furthermore the archived data is immediately available for the user to interact with.

Download auditTrail.tar.gz