MSS Code Factory 2.9 (production) Release History

2017-07-22 Programmer's Notes

I'm taking a little bit of a break as I await parts for a new computer -- a nice, fast Ryzen 5 job. Parts will be trickling in for the next week or three before I have it put together and will be resuming coding. Now that a new machine is on the horizon, I don't have the patience to put up with the long builds on my creaky old laptop.

2017-07-17 MSS Code Factory 2.9.14022 Cleanup on aisle 4...

A minor correction to the rule base so that all of the 2.10 C++14 code manufactures without complaint. That isn't to say it will actually compile.

2017-07-17 MSS Code Factory 2.9.14021 Switched Blobs to vectors of BYTE

Blobs now use vectors of BYTE, but as the CFSecurity model doesn't have any Blobs, the new rules are untested.

2017-07-17 MSS Code Factory 2.9.14018 SchemaPooledObj coded

That is it for the initial coding of the base and obj layers.

I need to switch over the Blob data to vectors of BYTE next, then I can move on to the RAM database or the SAX parsers. I haven't decided which I'll work on first.

2017-07-17 MSS Code Factory 2.9.14016 SchemaObj coded

SchemaObj has been coded and split into .cpp/.hpp implementation files.

That leaves the SchemaPooledObj to implement yet, and then the Obj layer will have been coded, and I can move on to the SAX parsers or the RAM database.

I think I'm going to switch the Blob type over to a vector of BYTE, so that the size of the Blob is tracked without me having to muck around with extra parameters, particularly for accessing the value of a Blob.

2017-07-11 MSS Code Factory 2.9.14014 TableObj coded

TableObj has been coded and split into .cpp/.hpp implementation files.

2017-07-11 MSS Code Factory 2.9.14012 Massive changes to base object operators

All of the base object operators have been modified to take const arguments. That turned out to be a major problem with my map constructions for the TableObj implementation. TableObj isn't quite compiling yet, but it is close.

2017-07-10 MSS Code Factory 2.9.14008 EditObj implemented

EditObj has been properly implemented as pairs of .hpp/.cpp files.

2017-07-07 MSS Code Factory 2.9.14005 Clean up rule base

All of the 2.10 projects now manufacture without throwing exceptions. That isn't to say the C++14 code produced for anything but CFSecurity 2.10 will compile.

2017-07-07 MSS Code Factory 2.9.14004 C++14 code for Mark II manufactures without complaint

I wanted to refresh the Mark II code base, so I fiddled with the rules a bit until the engine would manufacture the C++14 code for Mark II without complaining. Whether that code would compile is another question entirely.

2017-07-07 MSS Code Factory 2.9.14002 Obj implemented

The Obj implementation has been fully coded with the body of the implementation in the .cpp file rather than inline in the .hpp file. There have been major changes throughout the code base along the way.

2017-07-03 MSS Code Factory 2.9.13993 Base layer of code complete

The base layer of code is complete. Now I can move on to the Obj layer.

2017-07-03 MSS Code Factory 2.9.13991 Implemented base Schema

The base Schema has been implemented. I almost forgot to code the SchemaPool; I'll do that next, then move on to the Obj layer.

2017-07-02 MSS Code Factory 2.9.13989 ClientConfigurationFile coded

That leaves the Schema at the base layer to be coded, then it is on to the Obj layer.

2017-06-23 MSS Code Factory 2.9.13987 ConfigurationFile coded

The ConfigurationFile has been coded and clean compiles. That leaves the ClientConfigurationFile and the Schema at the base layer of the code to be implemented.

After that I'll be shifting to working on the implementation of the Obj layer.

2017-06-22 MSS Code Factory 2.9.13985 Switch from std::u16string to std::string

In compliance with the reworked version of CFLib 2.10, the code has been switched from using std::u16string to std::string, and the CFLib conversion routines that used to exist have been eliminated.

I've also removed the "using namespace std" statements, and instead explicitly refer to the std namespace as per normal C++14 coding conventions.

2017-06-21 MSS Code Factory 2.9.13982 Remove Cursor support

I've never found a need for Cursors, especially with the PageData support in place, so I've removed them entirely from the system.

That leaves the Configuration files and the Schema at the base layer to be implemented, then I can move on to the Obj layer.

The Configuration files are going to be a bear -- they're based on Java Properties objects, and I'm not sure there is an equivalent thing for C++14. I may have to "roll my own" version.

2017-06-20 MSS Code Factory 2.9.13980 Base DefaultFactory implemented

The .cpp files for the DefaultFactory implementations have been created and clean-compile.

That leaves the Cursor, Configuration file objects, and the Schema to be implemented at the base layer. Then I can shift my focus to implementing the schemaobj layer instead of just the interfaces for it.

2017-06-20 MSS Code Factory 2.9.13978 All object interfaces coded, all code now in "codefactory" namespace

All of the manufactured code is now in the "codefactory" namespace, as I was having trouble forward-declaring classes within a namespace that are defined in a different namespace. As this led me to believe that I'd need far more intelligence to the rule base than I was willing to code in order to properly support per-project namespaces, I opted to place all of the manufactured code in one namespace.

The object interfaces have all been coded and clean compile as well.

2017-06-19 MSS Code Factory 2.9.13976 IEditObj interfaces specified and built

The IEditObj interfaces are now specified and clean-compile.

2017-06-15 MSS Code Factory 2.9.13975 Move code to libschema from Schema in compliance with debhelper

Debhelper requires that the name of the package match the name of the source directory.

2017-06-15 MSS Code Factory 2.9.13973 Authorization coded

The Authorization objects have a clean-compiling .cpp file now.

2017-06-14 MSS Code Factory 2.9.13971 IObj coded

IObj has been coded and clean compiles. However, it has highlighted an issue that is going to result in some rather verbose code -- there is no equivalent to importing an entire package in C++, so I'll either have to include all the headers in the Schema objects and interfaces and include those, or explicitly include all the potentially necessary headers in each file. I like the Schema approach myself, so seeing as it is my project, that is probably the route I'll take.

2017-06-14 MSS Code Factory 2.9.13969 Base interfaces specified and implemented

The base interfaces have been specified and implemented. ISchemaSchema.hpp is incomplete, though, as it will require some objects that I haven't migrated yet in order to complete the specification.

It sure does take a lot longer to compile C++ code than Java code. And I'm not even done with CFSecurity yet!

2017-06-14 MSS Code Factory 2.9.13967 ISchemaTableTable.[cpp/hpp] complete and build clean

The ISchemaTableTable.hpp and ISchemaTableTable.cpp files clean compile.

2017-06-14 MSS Code Factory 2.9.13966 Java arrays will be migrated as vector of pointer

The Java arrays will be migrated as vector of pointer, so now the ISchemaTableTable.hpp files have been migrated and look clean for CFSecurity.

2017-06-14 MSS Code Factory 2.9.13965 ISchemaTableTable.hpp mostly coded

I need to decide what I'm going to do about migrating the Java array returns. Arrays aren't first class objects in C++ -- you can't return them.

2017-06-13 MSS Code Factory 2.9.13963 Basic objects are now ready to participate in standard C++14 containers

The basic objects are now fully-fleshed and ready to use in standard C++14 containers.

2017-06-13 MSS Code Factory 2.9.13962 Copy constructors implemented

The basic objects now have copy constructors. Once I add in some hash implementations, the base objects will be fully-fleshed.

2017-06-12 MSS Code Factory 2.9.13960 Assignment operator overloads corrected

The assignment operator overloads have been corrected to return *this instead of void.

2017-06-12 MSS Code Factory 2.9.13958 Warnings cleaned up and toString() implemented

The warnings from the build have been cleaned up and toString() has been implemented for Buff and HBuff. Now all of the data objects have comparators, assignment operators, toString(), and hashCode() implementations.

I do need to figure out how to implement C++ style hashing, though, so the objects can be used with standard containers.

2017-06-11 MSS Code Factory 2.9.13956 We Have A BUILD!!!

The C++14 code produced so far by MSS Code Factory clean compiles and links into a library.

There are a lot of objects that haven't been converted yet; only the headers used by the .cpp files so far get compiled, so the errors in the other files don't cause the build to fail.

But make no mistake: there is a lot of work yet to be done.

2017-06-11 MSS Code Factory 2.9.13953 A significant portion of CFSecurity C++14 compiles now

I've made a lot of progress debugging the build, and get up to the ISO code before I encounter problems with the set() implementations. That isn't surprising; I haven't reworked them from their Java origins yet because the code was working for the first few files that didn't have optional attributes.

2017-06-11 MSS Code Factory 2.9.13949 It looks like all I have to clean up yet are the hash methods

The hash methods still need cleaning up, and the remaining set() methods have to be converted to operator = overloads, but other than that I'm pretty much done building this set of code. Soon I can move on to the remaining objects.

2017-06-11 MSS Code Factory 2.9.13944 Many build errors fixed, but not there yet

Many build errors have been fixed and the Buff.cpp files almost commpile, but not yet.

2017-06-11 MSS Code Factory 2.9.13942 Ready to do some compile testing

I think I've got the headers and implementations for the Buff, HBuff, PKey, HPKey, and IndexKey all straightened out and ready to do some build testing. It isn't likely to succeed. For one thing, I forgot to refer to the base table's PKey for the comparisons, so subclass tables will blow up because there is no PKey with the same name as the table.

But that is easily fixed -- later.

2017-06-10 MSS Code Factory 2.9.13940 Split off HBuff.cpp

HBuff.cpp has been split off.

Once I deal with the index keys, I can do a test build, because that cluster of inter-dependent headers will be complete so a build can be attempted.

2017-06-10 MSS Code Factory 2.9.13939 Enhanced [H]Buff comparisons

The [H]Buff comparisons have been updated to consider the inherited columns as well. Otherwise you'd need to invoke a superclass implementation, and I don't think that is feasible for the std namespace versions of the comparators.

2017-06-10 MSS Code Factory 2.9.13937 Buff.cpp split off from Buff.hpp

The buffer object has been split. The header for HBuff is ready to be split next. Then I'll have to deal with the index keys.

2017-06-10 MSS Code Factory 2.9.13935 Much work done

The skeletons for the SchemaTablePKey, SchemaHPKey, and SchemaTableHPKey all look good for now. Some of them even load without errors in Eclipse, though some insist that std::u16string isn't defined. Go figure.

2017-06-09 MSS Code Factory 2.9.13934 Clean manufacturing run; a good check point

After a bunch of work, I've gotten back to a state where the rules expand without complaining again, so I'm checking in the work so far. You'll see work on the Buff, the Rec, the Data, the IndexKey, the HPKey, and the HBuff.

2017-06-09 MSS Code Factory 2.9.13932 Enhanced any rules to allow for types that don't specify min or max values

Certain types (times and UUIDs, for example) don't support the idea of min and max values being imposed on their data sets.

2017-06-09 MSS Code Factory 2.9.13931 CFCli now takes optional [-d|-n] as third argument

The new optional -d or -n can be specified between the first two arguments and the optional toolset name at the end of the argument list.

2017-06-09 MSS Code Factory CFCore 2.9.13930 Added debug mode static methods to CFEngine

The default for the debug mode is disabled/off. If you turn it on, you will get extremely verbose stderr logging of the rule names that are being expanded. Well, most of them. Reference resolutions don't get logged.

2017-06-09 MSS Code Factory 2.9.13928 Satisfied with PKey specification and implementation

I've only been concerned with the code produced for the ClusterPKey so far, but it looks good. There are problems with Eclipse properly evaluating the code, but that is probably caused by all the broken code in the other headers that get included.

I'll tackle Buff, HPKey, and HBuff next. That cluster of four objects is tightly inter-woven. That will also mean tackling the index keys for the sake of Buff and HBuff.

2017-06-08 MSS Code Factory 2.9.13927 Split off PKey implementation.cpp file

The implementation file for the PKey has been split off.

2017-06-08 MSS Code Factory 2.9.13925 Still working on PKey specification header

I'm still working on the PKey specification header. It is coming along quite nicely, though. I just added some hooks to CFLib 2.10 that I need for initializing UUID members and constants.

2017-06-07 MSS Code Factory 2.9.13923 Working on SchemaTablePKey specification header

I'm focused on the SchemaTablePKey specification header right now, as the rules in that file propagate through to being used by the buffers, HBuff, and HPKey as well.

2017-06-06 MSS Code Factory 2.9.13921 Enhance .gitignore specifications to allow for Eclipse and GNU automake files

Enhance the specification of cplus/$lower SchemaName$$Version$/$SchemaName$/.gitignore.

2017-06-06 MSS Code Factory 2.9.13917 Initial migration of Java 8 Obj layer to C++14 interface header files

There is an initial migration of the Java 8 rule base to a C++14 schemaobj interface header set.

2017-06-06 MSS Code Factory 2.9.13915 Initial migration of Java 8 to C++14 interface header files

There is an initial migration of the Java 8 rule base to a C++14 interface header file specification. I'll embed the method implementations in the header for now, then split them off into C++14 implementation files later.

Next I need to do an initial migration of the Java 8 SchemaObj files to C++14 interface header files.

2017-06-04 MSS Code Factory 2.9.13913 Relicense rule base under Apache V2, start on cplus rule base

The rule base has been relicensed under Apache V2 instead of GPL licensing, and the C++14 rule base has been started with a couple of .gitignore files created.

2017-06-01 MSS Code Factory CFAll 2.9.13909 C++ enhancements really complete now

I forgot to write the new attributes when saving the schema file from the editor. That has been implemented now. The code is complete and ready to test.

2017-06-01 MSS Code Factory CFAll 2.9.13907 C++ enhancements complete

The C++ support enhancements to MSS Code Factory are completely coded and ready to begin using. Now I have the facilities I need to implement rules for manufacturing C++14 source code.

2017-05-31 MSS Code Factory CFBam 2.9.13906 XML Parser enhanced to support new objects

The XML Parser has been enhanced to support the new CPlus and HPlus members.

2017-05-31 MSS Code Factory CFBam 2.9.13905 Add CPlus/HPlus customizations for engine

The engine expansion bindings have been added and wired for the CPlus and HPlus members that were added to the SchemaDef and Table objects.

2017-05-31 MSS Code Factory 2.9.13904 Rename Cpp/Hpp Import to Include

C++ uses includes, not imports.

2017-05-31 MSS Code Factory 2.9.13901 Added Cpp/Hpp attributes to CFBam

The CFBam implementation has been enhanced with Cpp/Hpp members corresponding to the J(ava) members, but the custom code hasn't been copy-paste-edited yet, nor have the custom editor forms been updated to support editing of the new attributes. The 2.10 CFBam model has also been enhanced accordingly.

2017-04-9 MSS Code Factory 2.9.13827 Corrected defect in MySQL delete scripts

There was still a lowercase table name being used by the delete scripts in the ClearDep implemenation. This has been corrected, and verified through painful testing with the Mark II Chatbot.

2017-04-09 MSS Code Factory 2.9.13825 Corrected production of MySQL database scripts

The joins for the MySQL database scripts were using lowercase table names, so the code was failing at run time. Apparently MySQL only analyses the syntax of the stored proc on creation, not the statements within the stored proc. Those get evaluated at runtime.

2017-04-02 MSS Code Factory 2.9.13823 Source and tool integrity check complete

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

2017-03-18 MSS Code Factory CFAll 2.9.13820 Revert to Log4J 1.2.17

It turns out that commons logging doesn't seem to like Log4J 2.x.

2017-03-18 MSS Code Factory CFCore 2.9.13819 Revert to Log4J 1.2.17

It turns out that commons logging doesn't seem to like Log4J 2.x.

2017-03-18 MSS Code Factory CFLib 2.9.13818 Revert to Log4J 1.2.17

It turns out that commons logging doesn't seem to like Log4J 2.x.

2017-03-08 MSS Code Factory 2.9.13817 Missing Java import tags added to database layer rules

The JavaXxxTableImport specifications are now included by the rules for the various database layer tables, producing code that has been verified for Mark II, which required imports to build its custom ServerProc.

2017-03-05 MSS Code Factory 2.9.13815 Self-referencing DelDeps propagated to remaining databases

All of the databases should now have code that supports the self-referencing DelDeps.

You should also be able to specify self-referencing ClearDeps, with the same restriction that only the terminal node of the dependency chain can be self-referencing.

2017-03-04 MSS Code Factory 2.9.13812 MySQL 5.7 supported, self-referencing DelDeps supported

MySQL 5.7 syntax is now supported and has been verified under Ubuntu 16.10.

The DelDep relationship chain can now terminate with a self-referencing relation, so that you can build trees of nodes. I don't think it will work with subclass hierarchies, though, only flat tables.

2017-03-04 MSS Code Factory 2.9.13811 Ready to test new MySQL code

I'm ready to test the new MySQL code that is intended to support self-referential object deletion for general relational databases. If the Mark II 1.1 MySQL scripts install successfully, then I'll have resolved the issue and can retrofit some code and some rules to take advantage of the fact. I might well be pushing past 2.10 to a 2.11 release of MSS Code Factory to deploy those changes.

2017-03-03 MSS Code Factory CFAll 2.9.13810 Added binding Relation.IsSelfReferencingRelation

The boolean evaluation IsSelfReferencingRelation has been added to the implementation. I need that in order to implement an idea in the rule base for MySql that may permit self-referencing object trees for general relational databases. MySql evaluates the sanity of the code about the best of the databases I have installed on this Ubuntu 16.10 Linux box. PostgreSQL requires you to execute the code in order to force a proper compile of it.

2017-03-03 MSS Code Factory 2.9.13809 Remanufactured by 2.8.13808

All of the 2.9 component projects have been remanufactured by MSS Code Factory 2.8.13808 and clean-built to bring them in sync with the latest changes, including sub-projects that weren't previously built.

2017-03-03 MSS Code Factory CFAll 2.9.13807 Remanufactured by 2.8.13806

All of the 2.9 projects have been remanufactured by MSS Code Factory 2.8.13806 and clean-built to bring them in sync with the latest changes, including sub-projects that don't actually get build for the 2.9 implementation, such as the SAX RAM loaders.

2017-02-15 MSS Code Factory 2.9.13805 Missing TableObjMembers expansion added

The custom code members of a TableObj can now be specified properly. The pieces were there, but the rule base was missing the expansion. If you're not using custom code, you don't need to download this release, but you should keep up to date anyhow.

2017-01-26 MSS Code Factory CFAll 2.9.13804 Rebuild and repackage to correct editor issues

The entire 2.9 source tree has been rebuilt and repackaged to correct problems with running the CFBam Editor.

2017-01-09 MSS Code Factory 2.9.13802 SAX RAM Loader now authenticates the RAM database properly

The RAM databases all have to connect( "system", "system", "system", "system" ) instead of as a default connection. This initializes the authentication information properly for the RAM instance. You should then immediately rollback() the RAM database and beginTransaction() to treat all of your work as being one big on the fly transaction against the RAM database.

Commits? Who needs commits for RAM...

2016-12-31 MSS Code Factory 2.9.13800 Updated copyrights for 2017

The copyright headers have been updated for 2017.

2016-12-31 MSS Code Factory CFCore 2.9.13799 Updated copyrights for 2017

The copyright headers have been updated for 2017.

2016-12-31 MSS Code Factory CFLib 2.9.13798 Updated copyrights for 2017

The copyright headers have been updated for 2017.

2016-12-30 MSS Code Factory 2.9.13795 Back-ported reworked connect() implementation

The changes I made to the custom copy of the connect-full implementation have been back-ported to the rule base and are now in effect for all manufactured projects. Note that you need to make changes to your build.xml files -- the core compile and jar packaging have been split into two parts, the first containing the real core, and the second containing the ram storage, which depends on the core and xml compiles.

2016-12-30 MSS Code Factory 2.9.13794 Imports to a RAM storage now works

You are forced to log in to the system cluster, system tenant, system user, and any password when you log in to a RAM-backed client session. Once you have done so, you should have access to any data that does not require the use of paging support.

I have to implement the paging methods for the RAM storage yet. I really don't want to do that tonight, though, so I won't.

2016-12-30 MSS Code Factory 2.9.13792 RAM storage now implements file imports

The RAM storage implementation now provides for file imports by a standalone client. However, my current RAM test client throws exceptions while trying to resolve the default system tenant for some reason. I'm having trouble catching the source of the resulting null pointer exception.

2016-12-03 MSS Code Factory 2.9.13789 Code always has bugs. No code is ever bug free.

The inheritance of server methods now implements correct code, replacing numerous occurances of $SchemaName$ with $DefSchemaName$, and dereferencing appropriate target objects for resolving DefSchemaName.

There was a fairly intensely iterative manufacture-build-debug-repeat cycle going on for a few hours this evening, but I got it working.

2016-11-19 MSS Code Factory 2.9.13787 Service Pack 5 under Apache V2 license

Service Pack 5 redistributes MSS Code Factory 2.9 under an Apache V2 license.

This license also applies to the rules used to manufacture code. You are no longer required to publish modifications to the rules, and are free to change or build on them as you see fit for your installation.

2016-11-19 MSS Code Factory CFCore 2.9.13786 Redistributed under Apache V2 license

CFCore is now distributed under an Apache V2 license instead of under the LGPL.

2016-11-19 MSS Code Factory CFLib 2.9.13785 Redistributed under Apache V2 license

CFLib is now distributed under an Apache V2 license instead of under the LGPL.

2016-11-18 MSS Code Factory 2.9.13782 Changed all 2.10 projects to an Apache V2 license

All of the 2.10 projects are being re-licensed under the Apache V2 license.

I realized that while I am a GPL enthusiast, most of the third party code I rely on is under the Apache license. I felt the 2.10 projects would find wider acceptance with the new license.

2016-11-18 MSS Code Factory 2.9.13780 Repacked with latest jars

The Apache jars have been refreshed, and the projects rebuilt with CFLib 2.9.13778 and CFCore 2.9.13779.

2016-11-17 MSS Code Factory CFCore 2.9.13779 Apache projects and jars refreshed

CFCore has been rebuilt with CFLib 2.9.13778 and the latest version of the referenced Apache projects.

2016-11-17 MSS Code Factory CFLib 2.9.13778 Apache projects and jars refreshed

The Apache projects that CFLib depends on have been refreshed and used to rebuild the jar.

2016-10-23 MSS Code Factory 2.9.13777 Repackaged

Forgot to update the version string for the 2.9.13776 packaging. Plus I wanted a "777" release.

2016-10-23 MSS Code Factory CFAll 2.9.13776 Correct packaging

The HTTP jars weren't included in the distributions because the file names had changed.

2016-10-21 MSS Code Factory 2.9.13773 Fixed critical "spread" bug

There was a critical bug in the "spread" implementation which caused an infinite loop if there was only one item to be spread.

2016-10-21 MSS Code Factory CFCore 2.9.13772 Fixed critical "spread" bug

There was a critical bug in the "spread" implementation which caused an infinite loop when there was only one item to spread.

2016-10-21 MSS Code Factory 2.9.13770 License updated to GPLv2.0

MSS Code Factory is now distributed under a GPLv2.0 license instead of the former LGPLv3 license. As the sole contributor to the maintenance of the code base, I can make this license change without having to get agreement from a developer community.

After some consideration, I realized that the LGPLv3 attempts to restrict the use of code in cloud environments. The cloud is a fact of life. Any attempt to restrict the use of code in the cloud is asinine.

2016-10-21 MSS Code Factory CFCore 2.9.13769 Remanufactured with updated LGPLv2.1 license

The code was supposed to reference LGPLv2.1.

2016-10-21 MSS Code Factory CFCore 2.9.13767 License changed to LGPLv2

CFLib 2.9 is now distributed under an LGPLv2 license instead of the former LGPLv3 license. As the sole contributor to the maintenance of the code base, I can make this license change without having to get agreement from a developer community.

After some consideration, I realized that the LGPLv3 attempts to restrict the use of code in cloud environments. The cloud is a fact of life. Any attempt to restrict the use of code in the cloud is asinine.

2016-10-21 MSS Code Factory CFLib 2.9.13766 License changed to LGPLv2

CFLib 2.9 is now distributed under an LGPLv2 license instead of the former LGPLv3 license. As the sole contributor to the maintenance of the code base, I can make this license change without having to get agreement from a developer community.

After some consideration, I realized that the LGPLv3 attempts to restrict the use of code in cloud environments. The cloud is a fact of life. Any attempt to restrict the use of code in the cloud is asinine.

2016-10-21 MSS Code Factory CFAll 2.9.13765 Begin licence change to LGPLv2

I hereby announce my intention to relicense all of the GPLv3 source code for MSS Code Factory under GPLv2, and all of the LGPLv3 source code under LGPLv2.

After some consideration, I realized that GPLv3 attempts to restrict the use of code in cloud environments. The cloud is a fact of life. Any attempt to restrict the use of code in the cloud is asinine.

GPLv2 has served Linux quite well over the decades. It has become the single most successful open source project of all time. That is worth thinking about when licensing code for general use.

2016-10-08 MSS Code Factory 2.9.13762 CFEng 2.10 initial modelling complete

The initial skeletal model of the English parse objects has been completed and is ready for review and experimental use.

2016-10-08 MSS Code Factory 2.9.13760 CFEng 2.10 clean compiles now

This release produces clean-compiling code for CFEng 2.10.

2016-10-08 MSS Code Factory 2.9.13758 First cut of CFEng 2.10 model added

The first cut of the English syntax model has been added.

2016-09-26 MSS Code Factory 2.9.13757 Service Pack 4

Service Pack 4 adds no new functionality, but it brings the use of the Log4J facilities up to the new "version 2" release, improving compatability with many application environments. Note that the manufactured code does change to allow for the use of Log4J 2.

2016-07-25 MSS Code Factory 2.9.13756 Stabilized build jars throughout projects

All of the build jars have been stabilized throughout the projects. There may still be some errors or omissions I find as I build the 2.10 projects, but there should be no further changes to the core 2.9 code.

Note that the rule base has been updated so that the mains produced by the manufacturing process follow the changes required for the Log4J upgrade.

None of the 2.10 run/launch scripts have been updated to reference the new jars.

2016-07-25 MSS Code Factory CFCore 2.9.13755 Corrected use Apache Commons Client jars

The Apache HTTP Components were refreshed from the Apache project and all code that depends on the jars have been refreshed with the updated code distribution.

2016-07-25 MSS Code Factory 2.9.13754 OpenJDK 8 build with tested Log4J 2 support

The engine has been used to manufacture the CFSecurity 2.10 project as a test to ensure that the Log4J updates to version 2 didn't break any of the runtime functionality.

2016-07-25 MSS Code Factory CFCore 2.9.13753 OpenJDK 8 build with support for Log4J 2

The refactoring of code to support Log4J 2 continues...

2016-07-25 MSS Code Factory CFLib 2.9.13752 OpenJDK 8 build with support for Log4J 2

The entire code base is being updated to reference and use Log4J 2 instead of the old Log4J APIs I've relied on for so many years. Now there is really nothing to do -- it is all handled through configuration files instead of through code.

2016-07-25 MSS Code Factory 2.9.13751 OpenJDK 8 build on Ubuntu 16.04.2 LTS

Fresh OpenJDK 8 build on Ubuntu 16.04.02 LTS, CFLib 2.9.13749, and CFCore 2.9.13750. The various tool jars of the 2.9 builds have been updated as well, and the specifications of the jars to load in the command line invoker scripts in the bin directory.

2016-07-24 MSS Code Factory CFCore 2.9.13750 OpenJDK 8 build on Ubuntu 16.04.2 LTS

Fresh OpenJDK 8 build on Ubuntu 16.04.02 LTS and CFLib 2.9.13749. The referenced tool jars have been updated as well, the same ones as were updated for the CFLib refresh.

2016-07-24 MSS Code Factory CFLib 2.9.13749 OpenJDK 8 build on Ubuntu LTS 16.04.2

Fresh OpenJDK 8 build on Ubuntu LTS 16.04.2. Just because I finally got some ideas about what to do next, without doing more of the same.

2016-07-10 MSS Code Factory 2.9.13747 Regression tests passed with Oracle Java 8 JDK

The regression tests have passed successfully for running MSS Code Factory over an Oracle Jave 8 JDK installation instead of an OpenJDK 8 installation for Debian "Jessie" AMD 64-bit.

2016-07-10 MSS Code Factory 2.9.13744 Rebuilt with Oracle Java 8 JDK

Rebuilt with Oracle Java 8 JDK for Linux 64-bit instead of OpenJDK 8.

2016-07-10 MSS Code Factory CFCore 2.9.13743 Rebuilt by Eclipse Mars OEPE with Oracle Java 8 JDK

Pieces of Oracle's OEPE code require the Oracle Java 8 JDK in order to run, so I've made a wholesale switch from OpenJDK 8.

2016-07-09 MSS Code Factory CFLib 2.9.13742 Rebuilt by Eclipse Mars OEPE

Repackaged and rebuilt by Eclipse Mars OEPE.

2016-06-17 MSS Code Factory 2.9.13741-SP3 Service Pack 3 is the final release

This is the final release of MSS Code Factory. I've used the Code Factory Accounting application to develop and test the various aspects of a custom application written using the tool that I wanted to, applied a couple of minor fixes to the rule base along the way, and am now satisfied that this project has reached its inevitable end.

2016-06-11 MSS Code Factory 2.9.13739 Rebuilt by OpenJDK 1.8.0_91 with latest CFLib, CFCore

MSS Code Factory 2.9.13739 was rebuilt by OpenJDK 1.8.0_91 using CFLib 2.9.13737 and CFCore 2.9.13738.

2016-06-11 MSS Code Factory CFCore 2.9.13738 Rebuilt by OpenJDK 1.8.0_91 with CFLib 2.9.13737

CFCore 2.9.13738 was rebuilt by OpenJDK 1.8.0_91 with CFLib 2.9.13737.

2016-06-11 MSS Code Factory CFLib 2.9.13737 Rebuilt by OpenJDK 1.8.0_91

CFLib 2.9.13737 was rebuilt by OpenJDK 1.8.0_91.

2016.06.07 MSS Code Factory 2.9.13736 RAM tables now import java.text

The RAM table implementations now import java.text in order to provide consistent imports with the database-specific implementations. This release is required for Code Factory Accounting 1.2.71.

2016.06.06 MSS Code Factory 2.9.13735 RAM tables now include math package

Intervening relationships are now checked for resolvability when reacting to a button press for a Picker. If there are any issues resolving the intervening data, the Picker window itself is no longer launched.

The RAM tables weren't including the math package, causing problems for the compiling of the custom code for CFAccounting 1.2.

2016.05.02 MSS Code Factory 2.9.13733 Disable PageData for CFCrm 2.10 table objects

I decided I was abusing PageData for CFCrm 2.10 just because it was easy to do, so I reverted back to non-paged data for those tables. Paging is a clumsy user interface that should only be used when absolutely necessary.

Contact lists and their components do not grow without end like accounting data does, so it makes more sense for people to split up their contacts into multiple lists if they are having performance problems than it does to force them to click a "more data" button over and over during normal use of the application(s).

Only CFCrm 2.10 and Code Factory Accounting 1.2 are affected by the change, but their databases do need to be recreated with this change.

2016.05.01 MSS Code Factory 2.9.13731-SP2 Service Pack 2

Service Pack 2 provides JavaFX support for the page data attribute of the Business Application Models. With this release, ListPane, PickerPane, PickerForm, and FinderForm objects are enhanced to automatically page data without requiring any manual coding as had been required with Service Pack 1.

During the development, the PageData attributes of tables in CFSecurity, CFInternet, and CFCrm were modified, so you will need to completely remanufacture your applications and reinstall your databases after doing so.

2016.05.01 MSS Code Factory 2.9.13730 JavaFX Pickers now support page data

The PickerPage and PickerForm now support page data for JavaFX.

The common lookups defined by CFSecurity and CFInternet no longer enable page data; I found that made for a clumsy user interface. Page data should only be used where absolutely necessary, not for data that is frequently accessed as an entire data set such as with an ISO lookup.

All applications need to be remanufactured as a result, and all databases will need to be recreated.

2016.04.28 MSS Code Factory 2.9.13728 JavaFX ListPanes now support page data

The ListPane objects for JavaFX now automatically implement page data support.

The CFSecurity model no longer specifies PageData="true" for the SecGroup and TSecGroup objects, as there is no way to use page data with the custom forms used for editing security objects. A full set has to be retrieved so it can be filtered. As there are no other pieces of code which would be retrieving these objects, it doesn't make sense to try to work around the PageData issues caused by the new rules instead of just disabling the PageData flag.

There are a number of dbcreate and java objects which you'll have to remove after re-manufacturing your project as a result.

2016.04.25 MSS Code Factory 2.9.13725 Propagate to JavaFX EltTabPane of ViewEditPane must be conditional

The propagation of the focus to the EltTabPane of a ViewEditPane has to be conditional on the existence of the EltTabPane.

2016.04.25 MSS Code Factory 2.9.13724 Correct JavaFX ViewEditPane

The JavaFX ViewEditPane was not properly propagating focus changes to the sub-widgets, preventing proper refreshing of the data display.

2016.04.25 MSS Code Factory 2.9.13723 Correct typo and script for CFBam Editor

The CFBam Editor run script had a typo referencing 2.7, as did the CFBam Editor model formatting/save code, which caused problems.

2016.04.21 MSS Code Factory 2.9.13721-SP1 Service Pack 1

Service Pack 1 adds support for page data services when a table specifies 'PageData="true"' in its configuration. Only flat tables with no class hierarchy can be paged.

Specifying paging does not automatically use paging in the list boxes of the GUI, as there are too many options as to how one implements paging in a GUI. Rather than making a bad general case assumption, I've left it up to the programmer to customize the code if they want to use paging.

The heavy lifting is done for you by the factory. All you have to do is code to use the new APIs provided.

All of DB/2 LUW, MySql, Oracle, PostgreSQL, and SAP/Sybase ASE have completed their testing to verify the implementation of paging.

Note that the RAM database doesn't support paging at all. If you are using an in-memory database, you aren't accessing it over the network, so there are no potential performance benefits to implementing paging for the RAM database.

2016.04.21 Programmer's Notes

I've decided against manufacturing support for page data by the list boxes. There are several cases where you want to do certain sorting operations after the last page of data has been read, but you don't want to do that for all cases. There are also cases where I want the programmer to have access to the page data APIs, but I don't want to force a paging interface on the user.

The customizations to implement paging aren't difficult, so I'm going to leave it as a manual exercise for the cases where a designer/programmer wants that behaviour to be implemented. MSS Code Factory does the heavy lifting of the back-end services to enable data paging, but you're going to have to do SOME work to make use of it.

2016.04.21 MSS Code Factory 2.9.13720 PostgreSQL PageAll debugged

The PostgreSQL version of PageAll has been debugged, uncovering problems with the java, java+xmsg, and java+pgsql layers. I will not be refreshing the 2.10 projects until I've tested PageAll for all the databases.

Before I proceed with the other databases, I'll customize one of the list boxes in CFAccounting 1.2 with a prototype of how I intend the paging to work in the GUI, and use that to exercise the PageByIndex code.

After I've got that working for PostgreSQL, I'll proceed with testing the other databases. Only after I'm done with the testing of the back end will I work on enhancing the rules for the list boxes in the GUI.

2016.04.21 MSS Code Factory 2.9.13718 XMsg enhancements for page data methods coded -- ready for testing

With the completion of the XMsg enhancements for the page data methods, the new code is now ready to be tested by some sort of framework. I'm going to start simple and just wire a button that pages through the ISOCountry data in CFAccounting, and remove the button once I'm done testing each of the databases.

After that, THEN I'll worry about enhancing the list boxes, as I wasn't originally planning on doing anything to the list boxes at all, but leaving it up to custom code to handle paging. I've since decided that is too easy an out for what isn't really all that difficult a problem to code for.

2016.04.20 MSS Code Factory 2.9.13716 JDBC code for new page methods coded for all databases

All of the databases now have the code in place to invoke the new stored procedures for paging data.

Next I need to implement the messaging layers for the new APIs in the XMsg rules. Once that is in place, I'm ready to do some hand-coding and testing of the new APIs.

2016.04.19 MSS Code Factory 2.9.13714 JDBC code for new page data methods for SAP/Sybase ASE

The JDBC code has been implemented for the SAP/Sybase ASE version of the new page data methods.

2016.04.19 MSS Code Factory 2.9.13713 JDBC code for new page data methods for MySql

The JDBC code has been implemented for the MySql version of the new page data methods.

2016.04.19 MSS Code Factory 2.9.13712 JDBC code for new page data methods for DB/2 LUW

The JDBC code has been implemented for the DB/2 LUW version of the new page data methods.

2016.04.19 MSS Code Factory 2.9.13711 JDBC coded for new page data PostgreSQL methods

The JDBC code has been implemented for the PostgreSQL version of the new page data methods.

2016.04.18 MSS Code Factory 2.9.13708 Trembling onto the runway...

This version finally clean-builds the first couple of 2.10 projects, even though I've turned on page data support for a lot of the global lookups that expected to be of any substantial size.

So from here on in, all projects are affected by changes to the page data implementation, because even CFSecurity has tables with page data enabled.

2016.04.18 MSS Code Factory 2.9.13707 Still not cleared for take-off

Bit rot sucks. I could have sworn those rules were working.

Oh well. I fixed them. Again.

This code should produce clean compiling projects that show the new paging methods, but which leave them unimplemented at this point.

2016.04.18 MSS Code Factory 2.9.13705 PostgreSQL prepared statement variables declared

The PostgreSQL JDBC implementation now defines the new prepared statement variables for the new page data queries, and cleans them up as part of the releasePreparedStatements() implementation for the table. I like to make sure my plumbing is clean before I try to shit on it by writing new code. :P

2016.04.17 MSS Code Factory 2.9.13703 Object layer enhancements complete

The Obj layer enhancements have been completed and now support the new data paging interfaces. The back end implementations are still not-implemented-yet stubs, but the supporting logic has been coded.

2016.04.17 MSS Code Factory 2.9.13702 Clean build of not-implemented-yet stubs for data paging interface

All of the new data paging interface methods have now been specified throughout the manufactured code, with not-implemented-yet implementation stubs for each affected implementation layer.

This code will compile, but you can't actually use the new interfaces yet.

Patience. One step at a time.

2016.04.17 MSS Code Factory 2.9.13701 ISchemaTableObj interface specified for data paging

The data paging methods have been added to the ISchemaTableObj interface.

I'll implement that interface before I issue a release for download; this is just a check-in of work in progress. It doesn't clean-build, so it can't be shipped.

2016.04.17 MSS Code Factory 2.9.13700 Corrected defect in referenced table merge

The PageData flag was not being properly merged, resulting in problems with the manufactured code for CFAccounting 1.2.

2016.04.17 MSS Code Factory 2.9.13698 Database table interface enhanced, not-implemented-yet stubs coded for layers

Each of the persistence layers implements a set of not-implemented-yet stubs for the new paging interface methods. The interface specification itself should remain stable while I flesh out the implementations.

I might move up a layer and code the Obj layer before proceeding with implementations.

I would also like to get the XMsg implementation taken care of before I deal with vendor-specifics.

2016.04.17 MSS Code Factory 2.9.13696 Oracle page data stored procedures install without errors

The Oracle version of the page data read procedures install without errors, as verified through CFAccounting 1.2.

As I can not test the stored procedures for Microsoft SQL Server without a windows box, I am not going to code them at all. This new functionality is not supported for SQL Server, and I'm going to drop SQL Server from my list of supported database servers. I'll just be stubbing the new APIs for these new stored procedures with "not implemented yet" for SQL Server.

2016.04.16 MSS Code Factory 2.9.13694 Forgot to restrict SAP/Sybase ASE page data result sets to "top 25"

The SAP/Sybase ASE page data queries now restrict their result sets to 25 rows.

2016.04.16 MSS Code Factory 2.9.13692 SAP/Sybase ASE page data stored procedures install without errors

The SAP/Sybase ASE version of the page data read procedures install without errors, as verified through CFAccounting 1.2.

2016.04.16 MSS Code Factory 2.9.13691 Refreshed documentation

The documentation has been refreshed to refer to the 2.9/2.10 releases of code instead of 2.7/2.8.

2016.04.16 MSS Code Factory 2.9.13689 MySql page data stored procedures install without errors

The MySql verson of the page data read procedures install without errors, as verified through CFAccounting 1.2.

2016.04.16 MSS Code Factory 2.9.13687 DB/2 LUW page data stored procedures install without errors

The DB/2 LUW version of the page data read procedures install without errors. CFAccounting 1.2 was the schema that was test-installed to a DB/2 LUW server.

2016.04.15 MSS Code Factory 2.9.13686 Ready to test DB/2 LUW page data stored procedures

Visual inspection of the new page data stored procedures for DB/2 LUW look good. Now to wire them up to the scripts and install them.

2016.04.15 MSS Code Factory 2.9.13684 New PostgreSQL stored procedures install successfully now

The new PostgreSQL data paging stored procedures install successfully now.

2016.04.15 MSS Code Factory 2.9.13682 Forgot to limit size of PostgreSQL page data result sets

The new sp_page_dbtablename[_all|_by_suffix] stored procedures now consistently use "limit 25" to restrict the size of the PostgreSQL result set.

2016.04.15 MSS Code Factory 2.9.13680 PostgreSQL page data stored procedures coded

The new sp_page_dbtablename[_all|_by_suffix] stored procedures have been coded for PostgreSQL, but not installed to the database nor executed yet.

2016.04.15 MSS Code Factory 2.9.13678 Successful execution of a GEL spread expansion

The PostgreSQL rules for the crsp_page_dbtablename_all.pgsql file make use of the new GEL spread statement, and a manual code review has been done on that stored procedure.

2016.04.15 MSS Code Factory CFCore 2.9.13677 Correct implementation of spread

The Java body being used for implementing the expansion of a spread had a nesting error that was causing an infinite loop. Not a stack overflow, fortunately, but an infinite loop. Bad enough. But fixed.

2014.04.14 MSS Code Factory 2.9.13675 Sort duplicate key queries by descending primary key

All of the database stored procedures now sort the duplicate key result sets by the descending primary key for the table being queried.

2016.04.14 MSS Code Factory 2.9.13673 Add missing build script

Add the missing InstallXSDs210.bash script.

2016.04.14 MSS Code Factory 2.9.13672 Primary index may not specify sort ordering

If the primary index specifies a sort ordering, some databases will not use the existing index and will instead try to create a primary index in the default tablespace for the server. It is better to let the database engine manage the primary index as it sees fit; then no creations are attempted in the default tablespace.

2016.04.14 MSS Code Factory 2.9.13671 Primary index constraint may not specify sort order

The specification of a primary index constraint is not allowed to specify sort ordering.

2016.04.14 MSS Code Factory 2.9.13670 Specify sort order when creating database indexes

There are ANSI SQL standards for specifying the sort ordering of an index, so all of the databases have been updated to specify the sorting for the index columns.

2016.04.14 MSS Code Factory 2.9.13668 Adjust sorting of CFCrm 2.10 indexes

Only the primary key index has to be in descending order when PageData="true" is specified. The other indexes over the table can be ascending or descending according to the whims and wishes of the designer.

2016.04.14 MSS Code Factory 2.9.13666-PROD Unlucky Devil -- it made it to production

MSS Code Factory 2.9 is being unleashed to production.

2016.04.13 MSS Code Factory 2.9.13658 Update rule base to reference 2.9 XSDs

Updated the rule base to reference the 2.9 XSDs.

2016.04.13 MSS Code Factory 2.9.13657 Signed release

Issue a signed release of MSS Code Factory 2.9.

2016.04.13 MSS Code Factory 2.9.13654 Support for GEL "spread" implemented

The GEL "spread" statement is now supported, but untested. I will be using this new construct to implement the data paging queries in the stored procedures.

2016.04.13 MSS Code Factory CFCore 2.9.13653 Added support for GEL "spread"

The objects and GEL compiler in CFCore 2.9 have been enhanced to support the "spread" construct. The new code is ready for testing.

2016.04.13 MSS Code Factory 2.9.13651 Initial release

The initial release of MSS Code Factory 2.9 is ready for regression testing. It has not been enhanced with support for the planned GEL statement "spread", of course. That will take much more than one day to do.

2016.04.13 MSS Code Factory CFCore 2.9.13650 Add the XSDs for the rule base

I forgot to migrate the XSDs for the rule base.

2016.04.13 MSS Code Factory CFAll 2.9.13649 Initial checkin of manufactured code

The initial checkin of the manufactured code for the 2.9 projects has not been built yet.

2016.04.13 MSS Code Factory CFCore 2.9.13648 Initial release of CFCore 2.9

CFCore 2.9 has been remanufactured by MSS Code Factory 2.8 and integrated with a refresh of the code from 2.7. It is now ready to be enhanced with the support for the planned "spread" GEL statement support.

2016.04.13 MSS Code Factory CFLib 2.9.13647 Initial release of CFLib 2.9

The initial migration of CFLib from 2.7 to 2.9 has been completed.