MSS Code Factory 2.8 (internal) Release History

2017-08-24 MSS Code Factory 2.8.14086 Correct implementation of Obj.getNamedObject()

Obj.getNamedObject() should not throw exceptions if no object matching the name is found. It is perfectly reasonable to probe to check if an object exists, not knowing whether it will be found or not.

2017-07-31 MSS Code Factory 2.8.14032 Implementation of narrowed relations corrected

There were bugs in the narrowed relationship implementations for years and years and years and years...

2017-07-30 MSS Code Factory 2.8.14028 The 2.9 code works again

The manufactured 2.9 code for MSS Code Factory works again. I sure made a mess with one little change...

2017-07-29 MSS Code Factory 2.8.14026 Closer to working again for 2.9

The 2.9 release almost runs again after my unsubtle changes to the CFSecurity model. I think the remaining changes are in the custom SAX parser, though, so I'm submitting the current code base as a release.

2017-07-27 MSS Code Factory 2.8.14024 Add SchemaDef.AuthorEMail and SchemaDef.ProjectURL

There are duplicate indexes for a tenant's data so you can search for the schema models created by the specified author, or find all the component projects for a given ProjectURL.

2017-05-31 MSS Code Factory 2.8.13903 Cpp/Hpp member renamed Include instead of Import

C++ includes files; it does not import them like Java.

2017-05-31 MSS Code Factory 2.8.13900 Add Cpp/Hpp members corresponding to J members for CFBam

The CFBam model has been enhanced with Cpp/Hpp attribute members corresponding to the J(ava) members. These will subsequently have custom code added to the MSS Code Factory 2.9 implementation so that the C++ code can be enhanced with custom code the same way that the Java code is. Seeing as there are .hpp and .cpp files corresponding to each .java file in the manufactured code, a 1:1 relationship between the name groups is maintained.

2017-04-02 MSS Code Factory 2.8.13822 Source integrity check complete

The source code for MSS Code Factory 2.8 has been successfully extracted from the GitHub repositories into a clean directory tree, clean built, and repackaged as a refresh deployment.

2017-03-18 MSS Code Factory 2.8.13821 Revert Log4J for manufacturing

Log4J 1.2.17 is required instead of Log4J 2.x.

2017-03-03 MSS Code Factory 2.8.13808 Correct defect in previously unbuilt code

The SAX RAM Loader code still had the old-style initialization of Log4J, rather than the new code for the update Log4J releases.

2017-03-03 MSS Code Factory 2.8.13806 Packaging refresh

The code has just been rebuilt and repackaged to incorporate any updates to the code produced by the Java 8 compiler.

Additional scripts have been created for rebuilding the 2.8 code tree more easily.

2016-11-19 MSS Code Factory 2.8.13784 All of the 2.9 projects are now under an Apache V2 license

The 2.9 projects are being relicensed under Apache V2, so the business application models had to be updated to reflect that fact.

Only MSS Code Factory 2.8 will remain under a Dual GPL license.

2016-10-21 MSS Code Factory 2.8.13771 There was a critical bug in the "spread" implementation for CFCore

The CFCore 2.9 project model has been updated to correct a critical "spread" bug that was causing an infinite loop.

2016-10-21 MSS Code Factory 2.8.13768 The 2.9 models now use LGPLv2.1 and GPLv2.0 licenses

The 2.9 models have been updated to use the LGPLv2.1 and GPLv2.0 licenses.

2016.04.13 MSS Code Factory CFAll 2.8.13656 Signed release

Issue a signed release of the 2.8 projects.

2016.04.13 MSS Code Factory CFAll 2.8.13656 Sign git repository

Sign the git repositories with a tag using my public key.

2016.04.13 MSS Code Factory 2.8.13652 CFCore model enhanced to support GEL spread

The CFCore 2.9 model has been enhanced to support the "spread" construct in GEL.

2016.04.13 MSS Code Factory 2.8.13646 Initial build, ready to test

The initial build of MSS Code Factory 2.8 is ready to test for manufacturing the 2.9 code base. I've done a quick test run of CFCore 2.9 and deleted the results without attempting a build; I need to prepare the git repositories for 2.9 first.

2016.04.13 MSS Code Factory CFCore 2.8.13645 Clean build

This is a clean build of the 2.8 migration of CFCore. Note that no one will ever actually use CFCore 2.8; it was just a stepping stone for refreshing the rules in MSS Code Factory 2.7's cfengine rule base that is used specifically for manufacturing CFCore and no other projects.

2016.04.08 MSS Code Factory CFAll 2.8.13643 Remanufactured by 2.7.13642-SP5

All of DB/2 LUW 10.5, MySQL 5.5, Oracle 11gR2, PostgreSQL 9.4, and SAP/Sybase 16.0 have passed their regression tests. Life is good in this universe of code.

Only Microsoft SQL Server remains untested, and I don't have a Windows box to test that database on.

2016.04.07 MSS Code Factory CFAll 2.8.13640 Remanufactured by 2.7.13639 to apply DB/2 LUW 10.5 regression test fixes

The new drivers included with DB/2 LUW 10.5 correct an old bug with JDBC support for BLOBs, so the proper code has been re-enabled instead of the CLOB wrappers that used to store BLOB data as Base64-encoded text.

A side effect of the way DB/2 LUW implements unicode data is that the codes for the symbols used by the currencies take 2 or more characters to store, so the CFSecurity model had to be updated to allow up to 4 characters of data for the unit symbols for the currency objects. All projects needed to be remanufactured, rebuilt, and reinstalled as a result.

The update 10.5 JDBC drivers are included with the refreshed 2.8 projects.

2016.04.07 MSS Code Factory CFAll 2.8.13638 SAP/Sybase ASE minor cleanup, regression tests passed

It doesn't affect the functionality of the SAP/Sybase ASE scripts, but there were some minor glitches in crdb_dbschemaname.bash that was littering the script directory with files that didn't need to be there. That has been cleaned up.

2016.04.07 MSS Code Factory CFAll 2.8.13636 Remanufactured to correct defects found during SAP/Sybase ASE regression tests

With the update to the latest version of SAP/Sybase ASE, an assumption in the CFSecurity 2.8 model was corrected, so all of the projects needed to be rebuilt and repackaged (ASE treats null as equal to null, uncovering a unique index that should logically allow duplicates, though the last rounds of testing with ASE a year or so ago had not uncovered this oversight.)

See the MSS Code Factory 2.7.13635 notes for further details about the results and changes made for the SAP/Sybase ASE testing.

The SAP/Sybase ASE jconn4.jar has been updated to the latest 16.0 patch release.

2016.04.04 MSS Code Factory CFAll 2.8.13634 Remanufactured by 2.7.13633 Service Pack 4

SAP/Sybase ASE scripts install without errors now, too. The easiest way to peruse the log file for errors is to do 'grep Msg *.log -A 5 | more' and just ignore the 'Msg 2007' warnings caused by references to stored procedures that haven't been defined yet; they'll get defined and the runtime will be ok.

All the databases that can be test-installed have been. I don't have a Microsoft SQL Server instance. I looked into using their developer Azure databases on the cloud services, but they presume you have a Microsoft client to upload the schema and don't let you install a schema from scripts in a shell.

The revision checks in the sp_delete_table stored procedures have been removed, propagating a fix I had made some time ago to the PostgreSQL and MySQL database scripts.

2016.04.04 MSS Code Factory CFAll 2.8.13632 Obsolete

Ignore this release.

2016.04.03 MSS Code Factory CFAll 2.8.13630 Remanufactured by 2.7.13629-SP3

The database schema installation scripts for all of the 2.8 models now install without errors for DB/2 LUW Express-C, MySQL, Oracle XE, and PostgreSQL.

2016.04.03 MSS Code Factory CFBam 2.8.13628 Adjust Digits to maximum 31, use CFLib 2.7.13625

CFLib 2.7.13625 reduces CFLibBigDecimal.MAX_DIGITS to 31 in compliance with DB/2 LUW's restrictions. The CFBam 2.8 model now specifies Digits="31" instead of Digits="38" as a result (previously 38 was the most restrictive limit, imposed by Oracle XE.)

The latest custom code from CFBam 2.7 has also been ported forward.

2016.04.02 MSS Code Factory CFAll 2.8.13624 Remanufactured by 2.7.13623-SP3 implementing critical fixes

Serious defects in the database creation scripts were corrected by changes to the 2.8 models and the 2.7 rule base. Those defects were discovered while installing the database schemas for Oracle XE. All of the databases now install as cleanly as possible.

The changes made to Oracle's scripts have also been made to those of the other databases, as all of the databases share a lot of common logic and structure.

You will see warnings/errors in the Oracle database installation log about "invalid" objects for CFBam 2.8 and CFFreeSwitch 2.8. Those objects have compiled clean, but they are stale because the objects they depend on have been updated since they were compiled. Oracle should resolve the issue at runtime.

The other databases install with no errors or warnings.

2016.04.01 MSS Code Factory CFCrm 2.8.13621 Table index sorting changed for PageData tables

Tables which specify PageData="true" need to specify descending indexes so the future data paging code can function properly. This also affects the sorting of data in the GUI.

2016.04.01 MSS Code Factory CFAll 2.8.13619 Adjusted Digits specifications of models to maximum 38, use CFLib 2.7.13616

CFLib 2.7.13616 reduces CFLibBigDecimal.MAX_DIGITS to 38 in compliance with Oracle's restrictions. The CFBam 2.8 model now specified Digits="38" instead of Digits="65" as a result (previously 65 was the most restrictive limit, imposed by MySQL.) CFDbTest 2.8 was already compliant with Oracle, specifying a maximum of 20 digits for its Number types.

2016.03.28 MSS Code Factory CFBam 2.8.13614 Migrated code was still referencing the mssbam-2.7.xsd schema

The migrated editor output formatter code was referencing mssbam-2.7.xsd instead of mssbam-2.8.xsd.

Note that you should be using the CFBam 2.7 Editor that is included with the main MSS Code Factory 2.7 distribution for editing your models, not the 2.8 release. The 2.8 release is development code, not production, and shouldn't be used with models you intend to manufacture.

2016.03.27 MSS Code Factory CFAll 2.8.13613 Remanufactured by MSS Code Factory 2.7.13612-SP2 Service Pack 2 (reissue)

The database names for the relationships were lost in the models and had to be restored.

2016.03.27 MSS Code Factory CFAll 2.8.13610 Remanufactured by MSS Code Factory 2.7.13608-SP2 Service Pack 2

The code has all been remanufactured by MSS Code Factory 2.7.13608-SP2 Service Pack 2, rebuilt, and repackaged. The latest version of the custom code for CFBam 2.7 has been ported to CFBam 2.8.

2016.03.25 MSS Code Factory CFAll 2.8.13602 Remanufactured by MSS Code Factory 2.7.13601

The qualified object names have been reworked because they weren't being calculated unless they were defined by a base class, which is incorrect behaviour. This was showing up as fully qualified names from the tenant on down in the CFBam 2.7 Editor where I was expecting to see names qualified by the BaseProject or by the SchemaDef.

2016.03.25 MSS Code Factory CFAll 2.8.13598 Add AttrPane.getEffJavaFXFocus()

The getEffJavaFXFocus() gets the focus of the form, and if it is being edited, returns the edit object, otherwise returning the focus. This is important for populating choice lists, as when you are adding a new object, only the edited version has its containership links properly established for resolving lookups.

2016.03.24 MSS Code Factory CFAll 2.8.13595 JavaFX layers remanufactured by 2.7.13594

When posting optional string/text fields in the AttrPanes, an empty field is now interpreted as a null. Inversely, if a field editor returns null, a required string/text field is now set to an empty string.

2016.03.23 MSS Code Factory CFBam 2.8.13591 Only allow none, Cluster, or Tenant to be chosen as dispensing table

Only none, Cluster, or Tenant can be chosen as the dispensing table for an id generator.

2016.03.23 MSS Code Factory CFBam 2.8.13589 Forward port fixes from CFBam 2.7

When emitting the initializers for the string and text types, it is necessary to force empty strings instead of nulls the same as in the editor forms, otherwise invalid code gets produced by the factory when the saved model is loaded.

2016.03.23 MSS Code Factory CFBam 2.8.13587 Remove CFBam.UuidGen.Dispenser relationship and attributes

UUID generators can't really be dispensed by tables -- they're programmatic.

Ported the latest 2.7 custom and editor code forward.

2016.03.21 MSS Code Factory CFBam 2.8.13568 Ported latest code from CFBam 2.7 forward to 2.8

In addition to porting the CFBam 2.7 code forward, the production of the installer for the CFBam 2.8 Editor has been enabled.

You could, in theory, copy-paste and modify the editor to connect to a XMsg server with some changes to support the CFSecurity/CFInternet custom tabs similar to other custom clients, but I wouldn't recommend that. Too much of the behaviour of the editor presumes that it is dealing with RAM storage, and therefore ignores atomic consistency. You would have to turn a lot of the editor functionality into ServerProcs to make it safe to run against a database. But still, I am sure someone will try to make it go regardless of the risks.

Plus there is the minor fact that the editor isn't set up to probe a database for schema reference packages at all, and even if it was, you'd have a serious problem with changing any of the referenced packages after another model referenced them, because you would get integrity violation errors up the wazoo. Still, I can see someone taking the effort of reloading entire databases from the model files on a periodic basis so that they could have a shared storage system for multiple developers/analysts to work on a model.

Hey, I'm not going to stop you -- but I'm not going to try to do it myself. It is just too daunting a task to deal with. I'm content to edit files instead.

2016.03.20 MSS Code Factory CFAcc, CFAsterisk, CFBam 2.8.13559 Remanufactured by 2.7.13558-SP1Beta4 to correct model errors

There were some design flaws in the CFAcc(ounting), CFAsterisk, and CFBam models detected by the new 2.7 model validator. These have been corrected, the 2.8 projects remanufactured, built, and repackaged with the corrections.

The model validator has not been ported forward to CFBam 2.8; I won't do that until after Service Pack 1 is released.

2016.03.19 MSS Code Factory CFAll 2.8.13556 Remanufactured by 2.7.13555-SP1Beta3

The DataScope, VAccFreq, EAccFreq, VAccSec, and EAccSec attributes have been stripped from the CFBam 2.8 model. The EnumCol table has also been removed, as you have to define Enum types as Schema types that are shared, not locally to a table.

The updated code to support those changes has been forward-ported from CFBam 2.7 to CFBam 2.8. CFBam 2.8 now has a full copy of the CFBam Editor as a result, though there is no 2.8 factory at this time (and likely never will be.)

2016.03.18 MSS Code Factory CFAll 2.8.13545 Linked with CFLib 2.7.13542, CFCore 2.7.13543

The new versions of the libraries/jars produce beeps when errors are caught and logged, so that you get some audible feedback when a manufacturing run is failing.

2016.03.17 MSS Code Factory CFBam 2.8.13540 Cleaned up labelling in JavaFX code

The CFBam 2.8 model now has labels on most of the columns that don't participate in relationships, and on the relationships themselves, so it looks much better than it used to, even with default manufactured code for JavaFX.

2016.03.17 MSS Code Factory CFAll 2.8.13536 Clean up formatting of the JavaFX code

The formatting of the attribute and list panes has been tidied up. The code worked, but it was ugly to look at. I hate ugly code.

2016.03.17 MSS Code Factory CFAll 2.8.13531 The HTTP clients now beep when exceptions are logged

It should have been a trivial thing to implement, but it was not.

2016.03.17 MSS Code Factory CFAll 2.8.13528 Try to play a beep when exceptions are logged using CFLib 2.7.13526

CFLib 2.7.13526 tries to use the most basic of Java audio support to play an alert.wav file, but no matter what approach I use, it will not play under Debian Linux. I give up. But I won't remove the code, in hopes that it might work for Windows and Mac users. At least it doesn't error-out.

2016.03.16 MSS Code Factory CFAll 2.8.13524 Switch to CFLib 2.7.13522, add trace/notrace argument to mains

The HTTP clients now accept a trace/notrace argument indicating whether exceptions should be logged to the system console. The default is to not log exceptions.

2016.03.15 MSS Code Factory CFAll 2.8.13513 The symmetrical release before my sabbatical

The Prev/Next chain links are now filtered out from the AttrPane displays, seeing as all they did was clutter up the user interface and provide yet another point of entry that would have to be customized to prevent the user from editing data they shouldn't.

2016.03.15 MSS Code Factory CFAcc 2.8.13511 Some DelDeps restored

A subset of the DelDeps I used to have in the 2.8 model have been restored.

You will not be able to delete any finalized data, were causing problems, but normally you don't want people deleting historical data from an accounting system anyhow.

2016.03.15 MSS Code Factory CFBam 2.8.13509 CFBam.Scope.Cont container relationship removed

Fixes made to other issues have made it possible to remove the CFBam.Scope.Cont container relationship, which corrects the missing variable declaration problems in the database creation scripts.

Oh happy day! This was a brain fart I am GLAD I woke up with! :D

2016.03.15 MSS Code Factory CFAll 2.8.13506 Remanufactured by 2.7.13505, relinked with CFLib 2.7.13503

All of the database creation scripts for MySql and PostgreSQL have been tested, which uncovered some issues for MySql support. MySql only supports numbers with a maximum of 65 digits, so the maximum used in all of the models for 2.7 and 2.6 have been reduced from 100 to 65, and the support limitation set by the CFLib implementations has also been reduced accordingly.

Issues with the CFAcc model were uncovered as a result of the MySql testing. With the corrections that have been applied, you won't be able to delete data from a RAM database for CFAcc. But as that application is intended to run against an RDBMS, that is a non-issue.

2016.03.14 MSS Code Factory CFBam 2.8.13499 Add SchemaRef.Prev/Next to support a Chain

A Prev/Next Chain has been added to the SchemaRef object to keep the model in sync with 2.7.

2016.03.13 MSS Code Factory CFAll 2.8.13492 Remanufactured by 2.7.13491 to apply model changes and RAM code improvements

MSS Code Factory 2.7.13491 incorporates a complete set of delete routines for the RAM database, and the CFBam 2.8 model has been updated with the latest version of the 2.7 design.

Enjoy! I know I'm pleased with myself. :)

2016.03.12 Programmer's Notes

I've decided I'm not going to fix that bug in the rule base, because there is too great a chance of breaking database code that I can't test. It is just some undefined variables in 4 stored procedure scripts for each CFBam database instance. As I never intended to store CFBam in a database, I don't care about the bug all that much. Anyone crazy enough to install that beast to a database server can fix those four declarations by hand.

2016.03.12 MSS Code Factory CFBam 2.8.13485 Major model changes

There were major model changes to CFBam with this release. The preparation has been laid for adding moveup/movedown ordering to the DelDeps and ClearDeps, but the stored procedures for those four routines are invalid right now. I know what I need to do to fix them, but I'm too tired to tackle it right now so I'm shipping the code as-is.

The new code does clean compile, though. I haven't tested it yet, though I don't expect any problems. (What programmer ever expects problems? We all have egos the size of Jupiter.)

2016.03.11 MSS Code Factory CFAll 2.8.13480 Back out forgetRelationships(), implement RAM moveBuffUp()/moveBuffDown()

The implementation of forgetRelationships() has been backed out, and the RAM implementation of moveBuffUp()/moveBuffDown() has been applied.

2016.03.11 MSS Code Factory CFAll 2.8.13472 Major multi-user stale data bug fixed

The Java layers have been remanufactured and rebuilt to ensure that the stale relationship bug doesn't crop up in the field. It hasn't been a problem for the engine itself because the only updates done during a model or rule loading process is to establish new relationships for some that had formerly been null during the initial insert to the RAM database.

That isn't true when you are editing data -- stale relationships are much more likely to become a problem, as the previously established relationships won't reflect the new data values after an update or, more importantly, if data is refreshed that was changed by a different user running an application against the database.

In other words, while I haven't seen it crop up, this was a MAJOR multi-user bug.

2016.03.11 MSS Code Factory CFAll 2.8.13468 Repackaged with CFLib 2.7.13466

CFLib 2.7.13466 corrects defects in the formatting of large numbers for XML files and messages.

2016.03.10 MSS Code Factory CFAll 2.8.13465 Remanufactured by 2.7.13464, repackaged with CFLib 2.7.13462

As CFLib 2.7.13462 had been released and updates should be shipped, I took this time as an opportunity to remanufacture the 2.8 projects to apply the low-priority changes that had been made to the rules and to the models.

2016.03.09 MSS Code Factory CFBam 2.8.13435 Ported custom code forward from 2.7

The custom code that used to be in the factory itself has been ported forward to 2.8.

2016.03.09 MSS Code Factory CFInternet, CFDbTest, CFBam 2.8.13434 Corrected bug when constructing TopProject

Constructing a TopProject in the Hierarchy browser was failing if you tried to attach a TopProject to a TopDomain, which is allowed by the model (in fact, it is probably the most common way of naming a project.)

2016.03.08 MSS Code Factory CFAll 2.8.13428 Initial source build by 2.7.13427

The initial code snapshot has been built from the code manufactured by MSS Code Factory 2.7.13427.