Sw4   >   About   >   Version 2014-01-10_1

Version 2014-01-10_1

This is a minor release with various bug fixes and minor enhancements.To update to this new release:
  1. Quit Omnis Studio.
  2. Backup your application!
  3. Replace the studioworks folder.
  4. Open your application and test.
  5. If you hit any snags, email me a zip of your application with instructions on when and where you are running into problems.
To take advantage of the Security Info Row updates:
  1. Backup your Application AND your Database
  2. Copy the schemas from swBase4/Security/Copy to SysAdmin to the SysAdmin module of your application
  3. Sync the schemas with your metadata by opening the Programmer Workbench to the SQL Meta-Data tab and click on each of the new schemas
  4. Sync the schemas with your database in the Database Admin tab of Programmer Workbench
  5. From the Application Menu, go into the Programmer Test Method
  6. Write a method call to swBase4.oConvertSecurityInfoRow.$ConvertSecurityInfoRow
  7. Once it is done running, test it out to make sure the preferences and login information is correct.
To take advantage of the Database Encryption update:
  1. Do the steps to take advantage of the Security Info Row updates
  2. Backup your Application AND your Database
  3. Find out how your database does encryption
  4. In your database's oDBSessionMethods_ object, override the $checkEncryptionModule, $checkEncryptedPassword and $setUserPassword methods
  5. For examples from PostgreSQL, check out the methods in oDBSessionMethods_POSTGRES
  6. In $checkEncryptionModule, write a test for the encryption module, or a SQL Query that returns true only if the database encryption is available to be used for your database.
  7. In $checkEncryptedPassword, write a check to compare the encrypted password with the entered string, as well as a straight comparison of the two encrypted strings
  8. In $setUserPassword, write the code to update / set the encrypted user password
  9. From the application Menu, to into the Programmer Test Method
  10. Write a method call to swBase4.oConvertSecurityInfoRow.$convertToDBEncryption
    Warning

    This method assumes the passwords are stored in the database in plain text

  11. Test to make sure it all works.
  12. 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.
    Warning

    This release and all future StudioWorks releases require Omnis Studio 5.x or greater.

    swBase4

    oCheckData_base/checkData_metadata (2013-04-23 Josh L. as per Andy H.)
    If the column name doesn't get translated by the stb table, try translating it with the servertablename

    oCodeTools/$_exportModsFormatting (2013-05-17 Josh L.)
    Added a method to format application modifications so it can be overridden without having to override the whole export method.

    oCodeTools/$exportMods (2013-05-17 Josh L.)
    Added a method to export application modifications like is done in studio tips.

    oConvertSecurityInfoRow/#ABOUT (2014-01-03 Josh L.)
    Transfered this object to swBase4/Tools to be used by StudioWorks developers in updating their databases to security info tables if they so wish.

    oDBAdminMethods_FILEMAKER/$#About (2013-04-23 Josh L.)
    Added this object for the FileMaker vendor.

    oDBAdminMethods_FRONTBASE/$dropIndex (2013-04-23 Josh L.)
    Changed the local var TableName to parameter pTableName, removed local var TableName

    oDBAdminMethods_MAXDB/$#About (2013-04-22 Josh L.)
    Created this object to interface with the MaxDB vendor of databases.

    oDBAdminMethods_POSTGRESQL/$_syncIndexes (2013-08-23 Josh L.)
    Get the tablename directly from the database so there is no possible room for error. PGSQL DAM is being touchy about capitalization now.

    oDBAdminMethods_POSTGRESQL/$_syncNulls (2013-08-23 Josh L.)
    Get the tablename directly from the database so there is no possible room for error. PGSQL DAM is being touchy about capitalization now.

    oDBAdminMethods_POSTGRESQL/$_syncTableAndColumns (2013-08-22 Josh L.)
    Get the tablename directly from the database so there is no possible room for error. PGSQL DAM is being touchy about capitalization now.

    oDBAdminMethods_abstract/$_doesTableExist (2013-08-22 Josh L.)
    Calculate the TableName parameter as the tablename from the database, otherwise in postgres, it won't be found properly

    oDBAdminMethods_abstract/$retDatabaseTableName (2013-08-22 Josh L.)
    This method was added to get the exact database table name because the PGSQL DAM is being touchy about capitalization.

    oDBAdminSQLText_FILEMAKER/$#About (2013-04-23 Josh L.)
    Created this object for FileMaker vendor.

    oDBAdminSQLText_MAXDB/$#About (2013-04-23 Josh L.)
    Created this object for MaxDB vendor.

    oDBSession/$checkEncryptedPassword (2013-12-12 Josh L.)
    Added this method so admins can use database encryption for user passwords and check them.

    oDBSession/$checkEncryptionModule (2013-12-12 Josh L.)
    Added this method so admins can check whether a database encryption module is installed.

    oDBSession/$setUserPassword (2013-12-16 Josh L.)
    Added this method to set the password info if the database uses encryption.

    oDBSessionMethods_JDBCDAM/$_prepareForLogon (2013-04-18 Josh L.)
    Overrode this method to assign the jdbc driver to the session object.

    oDBSessionMethods_PGSQLDAM/$checkEncryptedPassword (2013-12-12 Josh L.)
    Created this method to be used when doing one way password encryption in the database.

    oDBSessionMethods_PGSQLDAM/$setUserPassword (2013-12-16 Josh L.)
    Added this method to set the password info if the database uses encryption.

    oDBSessionMethods_base/$checkEncryptedPassword (2013-12-12 Josh L.)
    Created this method as a stub for anyone who wants to use the database to do password encryption rather than Omnis. For an example, look at the POSTGRES methods object. I have written the sql query to test for matching passwords using pg_crypto there.

    oDBSessionMethods_base/$checkEncryptionModule (2013-12-12 Josh L.)
    This method is a stub for anyone using database encryption to test for the encryption module their database supports. For an example, look at the POSTGRES methods object. I have written the sql query to test for pg_crypto.

    oDBSessionMethods_base/$initialize (2013-04-18 Josh L.)
    replaced the last two method calls with $_prepareForLogon as it does the same things as the other two method calls, but can be overridden for DAMS needing extras to be done.

    oDBSessionMethods_base/$setUserPassword (2013-12-16 Josh L.)
    Added this method to set the password info if the database uses encryption.

    oEncryptDecrypt/$decryptList (2013-09-03 Josh L.)
    Remove the added characters, so the string is returned the same way it was given to the encryption method.

    oEncryptDecrypt/$decryptString (2013-09-03 Josh L.)
    Remove the added characters, so the string is returned the same way it was given to the encryption method.

    oEncryptDecrypt/$encryptList (2013-09-03 Josh L.)
    engineer the string to be the correct length for proper encryption / decryption

    oEncryptDecrypt/$encryptString (2013-09-03 Josh L.)
    engineer the string to be the correct length for proper encryption / decryption

    oFunctions/$retLocalIPAddress (2013-04-18 Josh L.)
    Created cases for FileMaker & MaxDB.

    oListTools/#ABOUT (2013-12-13 Josh L.)
    Added this object to swBase so I can use it with the oSecurity updates and not have to worry about long queries.

    oSecurity/$:UserCustomInfoRow (2013-12-17 Josh L.)
    Update the method so the Custom Info Row can be retrieved from the database if the information is in its own table. If you have columns in the CustomInfoRow that are SQL keywords, you will have to override this method and calculate the row columns to be the same as those in the sCustomInfRow_listdef schema to work without changing the columns to match the database through the whole system.

    oSecurity/$:UserTimeoutMinutes (2013-12-16 Josh L.)
    Updated to allow for the SecurityInfoRow to be extracted and put in its own table.

    oSecurity/$:UserTimeoutSignOffTime (2013-12-16 Josh L.)
    Updated to allow for the SecurityInfoRow to be extracted and put in its own table.

    oSecurity/$_initialize_defineLists (2013-12-17 Josh L.)
    Define the empty password and security rows differently if they are stored in their own tables in the database. Changed FlagOK to a meaningful calculation so I didn't have to calculate it numerous times.

    oSecurity/$_retSchemasSecurityList (2013-12-17 Josh L.)
    Update to grab the security schemas list from a table in the database. The list is then calculated into the original listdef list to be used by Omnis.

    oSecurity/$_retSecurityInfoRow_group (2013-09-16 Josh L.)
    Properly destruct the security info row so it cannot be destructed again.

    oSecurity/$_retSecurityInfoRow_group (2013-12-17 Josh L.)
    Removed the Securityinforow.$clear because it is not necessary. Allow the securityinforow to be retrieved from a table in the database.

    oSecurity/$_retSecurityInfoRow_user (2013-12-17 Josh L.)
    Removed the Securityinforow.$clear because it is not necessary. Allow the securityinforow to be retrieved from a table in the database.

    oSecurity/$_retWindowsSecurityList (2013-12-17 Josh L.)
    Update to grab the security windows list from a table in the database. The list is then calculated into the original listdef list to be used by Omnis.

    oSecurity/$_signin_checkUserIDandPassword (2013-12-17 Josh L.)
    Allow the database to store the password in a separate table so it can be accessed by other frameworks. Also allow for the database to use encryption.

    oSecurity/$addDefaultSysAdminUser (2013-12-12 Josh L.)
    Create a new row for the Password and the Security info for the new user and commit them to the database.

    oSecurity/$checkCurrUserPassword (2013-12-12 Josh L.)
    Replaced this method with $checkUserPassword, so I only have one place to edit checking of passwords. The old method functionality was preserved in $checkUserPassword

    oSecurity/$checkPasswordHasExpired (2013-12-16 Josh L.)
    Update this method to use $checkUserPassword to check for the temp_ passwords. WARNING: This method only checks for temp_abc, temp_123 because with database encryption, you have to specify a whole password to check against the hash in the database.

    oSecurity/$checkUserPassword (2013-12-12 Josh L.)
    Added this method to check any user's password in the database. This method is being used by the signin methods in conjunction with database encryption.

    oSecurity/$checkUserPassword (2013-12-16 Josh L.)
    Updated this method so the password info can be stored in its own table in the database for easier access from other frameworks. There is also a section allowing for database encryption rather than just Omnis encrypted strings.

    oSecurity/$getUserPrefs (2013-12-13 Josh L.)
    Get the preferences from the database tables rather than the security info row.

    oSecurity/$getUserPrefs (2013-12-13 Josh L.)
    Destruct and construct the lists passed in so the references are correct once they've been calculated.

    oSecurity/$quickSignIn (2013-12-16 Josh L.)
    changed Do method to Do

    oSecurity/$quickSignIn (2013-12-16 Josh L.)
    $checkUserPassword should check the password in all cases and return whether it matches.

    oSecurity/$retGroupSchemasList (2014-01-10 Josh L.)
    Changed GroupsList.securityinforow to get the groups securityinforow and use it to get the Schemas list

    oSecurity/$retGroupUsersList (2013-12-16 Josh L.)
    Added error checking to retrieving the users list.

    oSecurity/$retGroupUsersList (2013-12-16 Josh L.)
    Allow storing the information in the database in its own table.

    oSecurity/$retUserPasswordInfoRow (2013-12-16 Josh L.)
    Allow for getting the password info row from the database if it is stored in its own table.

    oSecurity/$retUserSchemasList (2013-12-16 Josh L.)
    Added the case where the securityinforow is stored in a separate table in the database.

    oSecurity/$retUserSchemasList (2013-12-18 Josh L.)
    Changed the parameter from GroupsList.securityinforow to GroupSecurityInfoRow and calculated it above.

    oSecurity/$retUserWindowsList (2013-12-16 Josh L.)
    Added the case where the securityinforow is stored in a separate table in the database.

    oSecurity/$retUserWindowsList (2013-12-18 Josh L.)
    Changed the parameter from GroupsList.securityinforow to GroupSecurityInfoRow and calculated it above.

    oSecurity/$saveCustomInfoRow (2013-12-16 Josh L.)
    Allow the custom info row to be stored in its own table in the database.

    oSecurity/$saveGroupWindowSecurity (2014-01-10 Josh L.)
    Lets the security window list be stored in its own table in the database so other frameworks can access it.

    oSecurity/$saveUserPasswordInfoRow (2013-12-16 Josh L.)
    Allow the password to be stored in a separate table from the security info in the database. Assign all info to the password row and save it, then set the password because they may be using database encryption.

    oSecurity/$saveUserPasswordInfoRow (2014-01-03 Josh L.)
    PasswordInfoRow was changed to a list (so I could reuse the same variable), so the row has to be added and assigned.

    oSecurity/$saveUserPrefs (2013-12-17 Josh L.)
    Updated this method to allow the administrator to use separate database tables for the preferences.

    oSecurity/$saveUserSchemaSecurity (2013-12-17 Josh L.)
    modified this method to be able to use a separate database table for the security schemas list.

    oSecurity/$saveUserSchemaSecurity (2014-01-10 Josh L.)
    The new SecuritySchemasList has a different definition than the old one, so the assignments must be totally divided.

    oSecurity/$saveUserWindowSecurity (2013-12-17 Josh L.)
    Lets the security window list be stored in its own table in the database so other frameworks can access it.

    oSecurity/$saveUserWindowSecurity (2014-01-10 Josh L.)
    updated the method so the column names are correct for the list definition.

    oSecurity_DBAccessor_abstract/$:GroupsList (2013-12-18 Josh L.)
    Only assign the SecurityInfoRow from the column in the users list if we are not using separate database tables for the security information.

    oSecurity_DBAccessor_abstract/$:UsersList (2013-12-18 Josh L.)
    Only assign the SecurityInfoRow from the column in the users list if we are not using separate database tables for the security information.

    oSecurity_DBAccessor_abstract/$updateUser (2013-12-17 Josh L.)
    Removed the references to StmntObj because it is no longer being used.

    oSessionsManager/$retVendorsList (2013-04-18 Josh L.)
    Added the FileMaker & MaxDB vendors.

    oTableClassMethods_base/$_fixSQLText_InsDateTime (2013-04-08 Josh L. as per Doug K.)
    Check to make sure iDateTimeNowSQLText has a value as in $_fixSQLText_ModDateTime

    wProgrammerCachedLists/$destruct (2013-11-25 Josh L.)
    The window properties table doesn't automatically convert from binary to integer properly, it has to be done manually in Omnis. This only affects if the Security Info Row has been expanded into several tables, which is why I test for the windowproperties table in the database.

    wProgrammerCachedLists/constructTabpane (2013-11-25 Josh L.)
    The window properties table doesn't automatically convert from binary to integer properly, it has to be done manually in Omnis. This only affects if the Security Info Row has been expanded into several tables, which is why I test for the windowproperties table in the database.

    wProgrammerWorkbench/$destruct (2013-11-25 Josh L.)
    The window properties table doesn't automatically convert from binary to integer properly, it has to be done manually in Omnis. This only affects if the Security Info Row has been expanded into several tables, which is why I test for the windowproperties table in the database.

    wProgrammerWorkbench/constructTabpane (2013-11-25 Josh L.)
    The window properties table doesn't automatically convert from binary to integer properly, it has to be done manually in Omnis. This only affects if the Security Info Row has been expanded into several tables, which is why I test for the windowproperties table in the database.

    wSQLMetaDataQueryColsEditor_View/$construct (2013-11-25 Josh L.)
    The window properties table doesn't automatically convert from binary to integer properly, it has to be done manually in Omnis. This only affects if the Security Info Row has been expanded into several tables, which is why I test for the windowproperties table in the database.

    wSQLMetaDataQueryColsEditor_View/$destruct (2013-11-25 Josh L.)
    The window properties table doesn't automatically convert from binary to integer properly, it has to be done manually in Omnis. This only affects if the Security Info Row has been expanded into several tables, which is why I test for the windowproperties table in the database.

    wSQLMetaDataSchemaColsEditor_View/$#About (2013-04-23 Josh L.)
    Changed the $edgefloat property for the ListCalculation Field

    wSQLMetaDataSchemaColsEditor_View/$construct (2013-11-25 Josh L.)
    The window properties table doesn't automatically convert from binary to integer properly, it has to be done manually in Omnis. This only affects if the Security Info Row has been expanded into several tables, which is why I test for the windowproperties table in the database.

    wSQLMetaDataSchemaColsEditor_View/$destruct (2013-11-25 Josh L.)
    The window properties table doesn't automatically convert from binary to integer properly, it has to be done manually in Omnis. This only affects if the Security Info Row has been expanded into several tables, which is why I test for the windowproperties table in the database.

    wSessionEdit/$#About (2013-04-18 Josh L.)
    Added a field for jdbc driver name

    swDocs4

    No modifications

    swGui4

    oConcretizer/retFieldHandlersFactoryRef (2013-07-16 Josh L. as per Will A.)
    Calculated the parameter before calling the method so it is set properly.

    oFieldHandlerController/retFieldHandlersFactoryRef (2013-07-16 Josh L.)
    Calculate the parameter before calling the method so it gets set properly.

    oFieldPropertiesTool/restoreProperty (2013-12-09 Josh L.)
    Removed the calculate Value as line, as it isn't being used. Convert the number properties to binary before saving them so they can be converted on the way back. In this way, they will be returned as legible numbers instead of crazy ones. It seems that numbers don't translate well in binary between Omnis and PostgreSQL.

    oFieldPropertiesTool/restoreVariableValue (2013-12-09 Josh L.)
    Convert the number properties to binary before saving them so they can be converted on the way back. In this way, they will be returned as legible numbers instead of crazy ones. It seems that numbers don't translate well in binary between Omnis and PostgreSQL.

    oFieldPropertiesTool/retCustomWinPropertyValue (2013-12-09 Josh L.)
    Convert the number properties to binary before saving them so they can be converted on the way back. In this way, they will be returned as legible numbers instead of crazy ones. It seems that numbers don't translate well in binary between Omnis and PostgreSQL.

    oFieldPropertiesTool/saveProperty (2013-12-09 Josh L.)
    Removed the calculate Value as line, as it isn't being used. Convert the number properties to binary before saving them so they can be converted on the way back. In this way, they will be returned as legible numbers instead of crazy ones. It seems that numbers don't translate well in binary between Omnis and PostgreSQL.

    oFieldPropertiesTool/saveVariableValue (2013-12-09 Josh L.)
    Convert the number properties to binary before saving them so they can be converted on the way back. In this way, they will be returned as legible numbers instead of crazy ones. It seems that numbers don't translate well in binary between Omnis and PostgreSQL.

    wBase_ToolbarTitlebar_abstract/$_constructEnabledCmndsCSV (2013-04-23 Josh L. as per Tom M.)
    Changed 'edit' to 'Edit' as all values in the EnabledCmndsCSV are capped.

    wList_autoconfig/$control (2013-04-23 Josh L.)
    added a case for if 'Edit' command isn't being used, then double-click can still be used to view records.

    wMainWindow/$construct (2013-11-25 Josh L.)
    The window properties table doesn't automatically convert from binary to integer properly, it has to be done manually in Omnis. This only affects if the Security Info Row has been expanded into several tables, which is why I test for the windowproperties table in the database.

    wMainWindow/$destruct (2013-11-25 Josh L.)
    The window properties table doesn't automatically convert from binary to integer properly, it has to be done manually in Omnis. This only affects if the Security Info Row has been expanded into several tables, which is why I test for the windowproperties table in the database.

    wShell/$event (2013-09-25 Josh L.)
    Added evRestored, evMaximized and evMinimized to trigger $eventResize so that the window and toolbars will properly resize when the window's size changes.

    wWindowInstancesShell/$destruct (2013-11-25 Josh L.)
    The window properties table doesn't automatically convert from binary to integer properly, it has to be done manually in Omnis. This only affects if the Security Info Row has been expanded into several tables, which is why I test for the windowproperties table in the database.

    wWindowInstancesShell/constructTabPane (2013-11-25 Josh L.)
    The window properties table doesn't automatically convert from binary to integer properly, it has to be done manually in Omnis. This only affects if the Security Info Row has been expanded into several tables, which is why I test for the windowproperties table in the database.

    swIcons4

    No modifications

    swRefs4

    No modifications

    swReports4

    No modifications

    swWeb4

    oHTMLTools/$convertRowToHTMLEditTable (2013-04-08 Josh L.)
    for a designation of NO_LOOKUP, just use an entry column with the normal display decorator.