Sw4   >   About   >   Version 2009-01-31

Version 2009-01-31

These version notes cover the minor releases from 2009-01-01 to 2009-01-31

  1. Lookups - Fixed a problem with the main list query class using column aliases on lookup columns, and another problem with using foreign views for lookups on foreign keys. Enhancement added to allow the developer to add a $:LookupOrderBy property method to the lookup entry field to control the ORDER BY clause used when fetching lookup records. Bug fixed where returning from adding a new lookup record could wipe out another lookup if the first field in the window was also a lookup field.
  2. Security Sign-In Performance - The oSecurity object sign-in speed gets rather slow as you increase the number of users and groups. Loading and reloading the full list of users takes quite a bit of time. Since the full list of users is not normally needed by runtime users oSecurity was modified to only load the users list if $:UsersList is called. All other methods work with the current user or just load the specified user. Making this change required adding methods to the oSecurity_DBAccessor_abstract class. To work with this release the oSecurity_DBAccessor object in your SysAdmin module must be subclassed from swBase4. See the update instructions at the end of this section for more details. If you have any custom oSecurity methods that include iUsersList, you will need to modify those methods to first check and if necessary load iUsersList.
  3. Security Icons - In the process of testing the $iconlib library property I deleted the #ICONS class from swBase4 in the last release. This caused the Security window to lose all of its multistate icons. The original #ICONS class has been restored to swBase4 in this release.
  4. PostgreSQL Change Date to Timestamp - If you changed a date field to a timestamp field the DB Admin tool didn't notice the change and wouldn't alter the column. This has been corrected in this release. Other DAMS might experience the same problem.
  5. Manual Transactions $begin - Discovered that after setting a session to manual transactions you need to issue a $begin for $rollback to actually work. To simplify things for StudioWorks developers the $begin has been added to the $transactionmode.$assign method of the oDBSession object class. If the parameter you send to $transactionmode.$assign is kSessionTransManual a $begin will automatically be issued for you.
  6. Ping Timeout Default - The default pingtimeout session row property has been changed from 5 to 0 (zero). This means that the database will only be pinged if you change the default value. If you don't change anything the ping won't happen. The database ping was causing more an more headaches for developers.
  7. $maxcachedclasses - In the last release the $maxcachedclasses was increased from 200 to 2000 in hopes of seeing improved performance. I was experiencing increased crashed and decided to reduce it back to 200. I'm not certain this was the cause but didn't want to risk it for other StudioWorks developers. Feel free to experiement with different $maxcachedclasses settings.
  8. Prompt Method and Error Handling - Added documentation on a strategy for returning a PromptFlag from methods which prompt the user for input and give the user an opportunity to cancel the process. The prompt flag has values of 0=Error, 1=Continue, 2=Stop.

To update to this new release:

  1. Quit Omnis Studio.
  2. Backup your application!
  3. Replace the studioworks folder.
  4. Open your SysAdmin module.

    a) Rename oSecurity_DBAccessor to X_oSecurity_DBAccessor.
    b) Copy oSecurity_DBAccessor from mySysAdmin to your SysAdmin module.
    c) Rename oMainCo_DBAccessor to X_oMainCo_DBAccessor.
    d) Copy oMainCo_DBAccessor from mySysAdmin to your SysAdmin module.

    If you have any custom or modified methods in the above X_ classes, review those methods and copy them to the new classes.
  5. Open your application and test it.
  6. If you hit any snags, email me a zip of your application with instructions on when and where you are running into problems.
Each library and the modifications in the release are listed below. The modifications are compiled from the @MOD tag comments found in the methods of the classes in the library.

myAppMain

No modifications

mySysAdmin

oMainco_DBAccessor/$#About (2009-01-19 Doug K.)
Set the $superclass to the abstract super class in swBase4 and deleted the subclass methods.

oSecurity_DBAccessor/$#About (2009-01-19 Doug K.)
Set the $superclass to the abstract super class in swBase4 and deleted the subclass methods.

swBase4

oDBAdminMethods_POSTGRESQL/$_syncTableAndColumns_getAddAlterColsLists (2009-01-19 Doug K.)
Added code to check for timestamp subtype. Change from date to timestamp was being missed for alter columns.

oDBSessionMethods_base/$transactionmode.$assign (2009-01-16 Doug K.)
If the session is being set to manual transactions, automatically issue a $begin.

oEmail/pingSMTPServer (2009-01-12 Doug K per Mike Matthews.)
Check for port # appended to IP address and if so, use the specified port.

oFunctions/$dragdropmoveLinesInList (2009-01-19 Doug K.)
Using pDragField when removing old lines doesn't work. Use pfListVar instead.

oIconsList_Model/$loadData (2009-01-02 Doug K.)
Reset the smartlist after remove and merge of icons from a schema class. Otherwise all the items are status deleted and inserted.

oModuleDataTool/$canModifyData (2009-01-15 Doug K.)
Added @DEBUG message to assist with tracking down incorrect oModuleData checks.

oSecurity/$:UserCustomInfoRow (2009-01-19 Doug K.)
Get the custominforow from the current user row rather than the users list.

oSecurity/$_UPDATEUSERANDREBUILDLIST (2009-01-19 Doug K.)
Deprecated this method. We don't want to be rebuilding the users list in the oSecurity object. (slows performance)

oSecurity/$_retSecurityInfoRow_user (2009-01-07 Doug K.)
Always reload the users list from the database in case the sysadmin changed security settings or other info.

oSecurity/$_retSecurityInfoRow_user (2009-01-19 Doug K.)
Just refetch the specified user to improve performance. (Avoid reloading all the users)

oSecurity/$_retSecurityInfoRow_user (2009-01-19 Doug K.)
Just update the current user if it matches. Don't bother with iUsersList.

oSecurity/$addUserToGroups (2009-01-19 Doug K.)
Call $_updateUser rather than $_updateUserAndRebuildLists to improve performance.

oSecurity/$getUserKey (2009-01-19 Doug K.)
Modified the method to not use the iUsersList.

oSecurity/$retGroupUsersList (2009-01-19 Doug K.)
Call $:UsersList to get the list of users.

oSecurity/$saveCustomInfoRow (2009-01-19 Doug K.)
Call $_updateUser rather than $_updateUserAndRebuildLists to improve performance.

oSecurity/$saveUserPasswordInfoRow (2009-01-19 Doug K.)
Call $_updateUser rather than $_updateUserAndRebuildLists to improve performance.

oSecurity/$saveUserPasswordInfoRow (2009-01-19 Doug K.)
Removed the use of iUsersList from the method.

oSecurity/$saveUserPrefs (2009-01-19 Doug K.)
Call $_updateUser rather than $_updateUserAndRebuildLists to improve performance.

oSecurity/$saveUserSchemaSecurity (2009-01-19 Doug K.)
Call $_updateUser rather than $_updateUserAndRebuildLists to improve performance.

oSecurity/$saveUserWindowSecurity (2009-01-19 Doug K.)
Call $_updateUser rather than $_updateUserAndRebuildLists to improve performance.

oSecurity/$signin (2009-01-19 Doug K.)
Created a new $signin method that does NOT load the iUsersList. This was done to speed up the sign-in security check. The users list is only loaded if $:UsersList is called by a public method.

oSecurity_DBAccessor_abstract/$:GroupsList (2009-01-19 Doug K.)
Get the pkey column name from the table class. Use a variable for the PKeyColName.

oSecurity_DBAccessor_abstract/$:UsersList (2009-01-19 Doug K.)
Get the pkey column name from the table class. Use a variable for the PKeyColName.

oSecurity_DBAccessor_abstract/$_retDBUserRow (2009-01-19 Doug K.)
Added method to fetch a single user database row. Method is needed to speed up security signin.

oSecurity_DBAccessor_abstract/$_retSecurityUserRowFromDBUserRow (2009-01-19 Doug K.)
Added method to convert a user database row to an StudioWorks security row. Method is used by various StudioWorks methods.

oSecurity_DBAccessor_abstract/$retSecurityUserRow_pUserID (2009-01-19 Doug K.)
Added method to fetch a single user security row based on UserID. Method is needed to speed up security signin.

oSecurity_DBAccessor_abstract/$retSecurityUserRow_pUserKey (2009-01-19 Doug K.)
Added method to fetch a single user security row based on UserKey. Method is needed to speed up security signin.

oSessionsManager/$:DefaultSessionRow (2009-01-12 Doug K.)
Default 'pingtimeoutseconds' to zero (0).

oStartupTaskDefaultMethods/$_setDefaultsAndPrefs (2009-01-19 Doug K.)
Experiencing Omnis crashes. Wondering if setting $maxcachedclasses to 2000 is causing it. Modify code to use 200.

oStartupTaskVarsTool/$saveTaskVarPropertiesOnSignOut (2009-01-19 Doug K.)
Removed saving last search, last selected, last display, last window properties from local_prefs. Not necessary as they are stored in the user profile in the main database and loaded on sign-in.

oStartupTaskVarsTool/retStartupSessionRow (2009-01-12 Doug K.)
If pingdbserver is zero(0) set pingtimeoutseconds to zero as well.

oStringTablesSchemasEditor_Model/$:caneditClass (2009-01-02 Doug K.)
Added property method to return the value of ibCanEditClass.

oTableClassMethods_base/$setDefaults (2009-01-06 Doug K.)
Only set default values for columns which are part of the base schema.

wStringTablesSchemasEditor_View/$refreshView (2009-01-02 Doug K.)
Bug fix. Setting bCanEdit was calling the wrong model methods. Supposed to call $:caneditData and $:caneditClass.

swDocs4

@00 Error Handler/@41 Error Handler Coding for Prompt Methods (2009-01-22 Doug K.)
Added documentation on a technique for error handler coding with prompt methods.

@50 Lookups/@25 Intercepting Lookups (2009-01-21 Doug K.)
Added documentation for $:LookupOrderBy

@64 Version 2009-01-31/@00 About (2009-01-19 Doug K.)
Started release notes for minor releases from 2009-01-01 to 2009-01-31

swGui4

oFieldDecorator_click/$decorateField (2009-01-06 Doug K.)
For checkbox field, do nothing when it is set to 'click' decorator type.

oFieldHandlerController/$event (2009-01-02 Doug K.)
The lookup field handler was getting called on 'displayonly' fields. Added check for type <> displayonly.

oFieldHandlerLookupTypeAhead/event_evAfter (2009-01-07 Doug K.)
Clear iLookupList if the lookup field is empty when the user leaves the field.

oFieldHandlerLookupTypeAhead/event_evAfter (2009-01-15 Doug K per Mike Matthews.)
If the lookup list is empty, the $line value can still sometimes be 1, so also check the $linecount.

oFieldHandlerLookupTypeAhead/updateLookupList (2009-01-08 Doug K.)
If no last selected lookup line was found, then preselect the first line in the lookup list.

oNavigationMenu_Model/removeDuplicateNavMenuLines (2009-01-02 Doug K.)
Modify method to remove duplicate nav menu lines from the main library rather then the module.

oWindowMenus_Model/$:caneditData (2009-01-15 Doug K.)
Added parameter bLogErrorIfNot=kFalse, since this is only a check.

wBase_abstract/$:Modified.$assign (2009-01-16 Josh L.)
Changed ibModified to pbModified for the check.

wComplexGrid_abstract/$eventClose (2009-01-09 Doug K.)
Copied $eventClose method from wEdit_abstract to wComplexGrid as the method is needed for complex grids which allow users to 'edit'.

wComplexGrid_abstract/$eventClose (2009-01-14 Doug K.)
Set ibModified to kFalse if the user selects "Don't Save".

wEdit_abstract/$eventClose (2009-01-14 Doug K.)
Set ibModified to kFalse if the user selects "Don't Save".

swIcons4

No modifications

swRefs4

No modifications

swReports4

No modifications

swWeb4

No modifications