Complete redesign and reimplementation of submodel dependency graph and related types and functions.
Graphs can now represent all types of submodels, including local submodels of non-main scripts. They also now store two different types of information about the submodel: where it is used and where it is defined. The graph construction can also be better controlled now, including or ignoring submodels based on some arbitrary predicates. And another important change: the same submodel name can be used by different definitions in different parts of the graph;
Updated the graph viewer, submodel importation and submodel manager to show and use the new information provided by the dependency graph;
Some heavy refactoring.
Added back information removed from the Submodel Manager by commit e1ff709a4ce94923084159e355f1811129b8c49f “Refactor the Submodel Store dialog and update its view to show the submodel groups.”
Removed use of dependency graph from Functor Library and updated relevant classes about the new definitions.
Fixed typo in variable name.
Changed functional type to use one already defined by Java (Consumer).
Fix bug where table column data was not deleted.
Add shortcuts to the application.
Profile data collection should not be called every time the tree is updated.
Handle bundle script type.
Removed debugging information from submodel dependency graph operations.
Add menu entry to show the submodel dependency graph for the current model script.
Fixed typo.
Changed order and disposition of some menus; Refactoring.
Make sure the information about the main script is always visible in the dependency graph, even if the main script does not use or define any submodels.
Removed unused method argument.
Formatting.
Added application name and version to the menu bar.
Changed description for EGOMLX file type to make its use more clear.
Used flag to treat missing submodels as errors when copying scripts.
Additional fixes to the submodel dependency graph:
Also apply the generation of the submodel node attribute to the initial node of the dependency graph;
Defined method to retrieve only the direct dependents of a submodel node;
Defined method to retrieve only the direct dependencies of a submodel node;
Fixed error where the submodel dependencies and dependents could be returned in the wrong order;
Fixed bug when comparing two submodel dependencies nodes;
Defined additional query method to test if a submodel node has unknown access type;
Documentation fixes and improvements;
Clarified if main script node is accepted by certain methods of the submodel dependency graph.
Defined convenient method for reading scripts from string.
Fixed documentation.
Changed IssuePanel behavior to prevent requesting functor information from C++ during paint operations; Some method refactoring.
Fixed error that could make the verification of submodel equality to fail with a parser error.
Defined explicit parameter to control factory use when copying submodels.
Refactoring: renamed method for clarity.
Refactoring some definitions to a new class to simplify ScriptEditor.
Changed the showErrorDialog() version used to the one that automatically shows information about the exceptions thrown.
Better consistency when updating submodels and script representations on the interface.
Changed behavior for retrieving submodel dependencies and dependents: the submodel itself is no longer included in the output list.
Avoid unnecessary dependency graph recalculations when defining and updating submodels.
Fix a bug when creating/updating submodel panes: the initial submodel copy could fail and report a spurious parse error exception.
Simplified definition of method used for applying changes to submodels when saving or running scripts.
Fixed error where the topological sorting would exclude the main script from the result.
Added documentation.
Added current submodel node to the list of arguments passed to construct an attribute when building the submodel dependency graph.
Added parameter to getDependencies() e getDependents() to control if the resulting list of nodes should be sorted topologically.
Changed all methods related to submodel importing to use the same framework:
Redefinition of SubmodelImporter to perform all the submodel importing tasks.
Unification of how importing a submodel from a script or from a file works.
Use of new algorithm to detect duplicates in the dependency list of a submodel.
Replaced assertions checking for false with fail(exception) when an invalid exception is thrown.
Refactoring for the definition of a separate tuple package.
Removed unnecessary update of the docking view.
Moved menu item to show the dependency graph to the Submodel menu.
After importing only one primary submodel, make sure its graph panel is selected.
Comments.
Add icon to egomlx files.
Refactor the debug monitoring process.
Added “Esri Projection Engine Database” to the library list in the about window.
Modified the developer list in the about window.
Changed references from Dinamica EGO 6 to Dinamica EGO 7.
Defined specific preference set for Dinamica EGO 7.
Fixed bug where publishing submodels could fail depending on the arrangement of dependencies; Fixed comments.
Modified the application updater to use the tools and URLs related to version Dinamica EGO 7.
Added assertion to detect invalid use of ScriptEditor.addNewAndReloadSubmodelPresentations().
Removed incorrect asseetion: the MAIN_NODE is a valid dependency of himself.
Added additional parameter to allow printing the textual representation of submodel node attributes when dumping the dependency graph content; Printing submodel node MD5 hashes for debugging when importing submodels.
Fixed bug where submodels that have two or more of the same dependencies coming from different sources would fail the equality test.
Refactor the Script Runner.
Fix a regression where the execution cancellation works only in debug mode (caused by commit 'Refactor the debug monitoring process.').
Fixes errors that would cause the script monitoring to keep several copies of the same submodel, if the submodel script were replaced by another one.
Refactoring: parameter and some method renaming for clarification, field reordering, and removal of some redundant assertions.
Image Viewer (Map Viewer)
Fixed storage of options to use version 6.
Formatting all files using new code style.
Changed project to make sure JDK 1.8 is being used on Netbeans.
Change formatting to use the Eclipse one to avoid errors caused by the previous formatting tool; added formatting tool to project definition.
Additional formatting and source clean ups.
Add gitattributes; Normalize all the line endings.
Fixed issue cause by the automatic clean up tool assuming the wrong type of container element.
Removed unnecessary prefixes (and also some suffices) from DLL types now represented by “enum class”.
Passing exception straight to the showErrorDialog() to display the complete error.
Refactoring for the definition of a separate tuple package.
Defined specific preference set for Dinamica EGO 7.
Dinamica NUI Utils (Graphical User Interface Utilities)
Create a class to manage the clipboard.
Changed encoding of all files to UTF-8.
Formatting all files using new code style.
Removing unused anchor files used by previous versions; Adjusted code that was still using the previous anchors.
Changed project to make sure JDK 1.8 is being used on Netbeans.
Avoid raising an exception when the formatting text is null.
Change formatting to use the Eclipse one to avoid errors caused by the previous formatting tool; added formatting tool to project definition.
Add gitattributes; Normalize all the line endings.
Additional formatting and source clean ups.
Removed unused parameter “window”.
Updated copyright disclaimer.
Removed unnecessary prefixes (and also some suffices) from DLL types now represented by “enum class”.
Refactoring of text formatting functions used to calculate rendering layouts as a separate class.
Fix pontential race condition when retrieving font metrics.
Fixed warning caused by the handled exception being too broad.
Refactoting and formatting.
Allows Pairs and Triads to be used as keys in collections.
Refactoring.
Add some utilities to file handling.
Add gettter to recent file list.
Added missed git attribute file.
Redefinition of methods responsible for converting exceptions into their textual representations: the new definitions are simpler and cover all the cases.
Defined methods to automatically use an exception as part of the message displayed in the error dialog and print the corresponding stack trace.
Show information about the exception with the error message.
Definition of entity that simplifies the use of list of ByteBuffer as container keys.
Fixed comments.
Defined new tuple type holding four values.
Definition of new method to fail assertion if an exception was thrown.
Refactoring of tuple types: moved then to a separate package; Fixed bug in the definition of Triad.
Comments.
Defined specific preference set for Dinamica EGO 7.
Defined method to retrieve the internal content of the ByteBufferListKey.
Dinamica (Application Core and DLLs)
Removed no longer necessary charset information and configuration.
Fixed compilation erro caused my previous patch: Removed no longer necessary charset information and configuration.
Allows PROJ/GDAL to properly handle projections provided by ESRI.
Added test case to confirm proper handling of ESRI projections.
Fixed bug [caused by incorrectly porting relative from boost::filesystem to std::filesystem] that was preventing Workdir from working properly.
Fixed possible warning issued by cmake when installing GDAL files defined by ESRI.
Formatting.
Generate of cmake scripts for Visual Studio with the parallel compilation flag enabled.
Don't show error message when new column name is same as current name.
Changed behaviour of FilenameEditor validation to fix regression where Folder would no longer accept an empty path after replacing boost::filesystem with std::filesystem.filesystem; Added test cases.
Define data converter from positive integer value to non negative value.
Don't show error message when creating an already existing column.
Added test cases for AddTableColumn.
Normalize all the line endings.
Changed definition of several “enum” to “enum class”.
Removed unnecessary prefixes (and also some suffices) from types now represented by “enum class”.
Fixed regression on Linux caused by last commit (Removed unnecessary prefixes [and also some suffices] from DLL types now represented by “enum class”).
Replaced suitable cases of std::tie() by structural binding.
Fixed some characters represented using the wrong encoding causing compilation warnings.
Fixed compilaton warnings.
Fixed bug where using “.modelDir”as input variable would crash GetEnvironmentValue; Added test cases.
Defined and exported function to Java used to discard the submodel factory of a script.
Add groups to the input ports of the CreateMap and the CreateCategoricalMap functors.
Create a bundle type, which archives all model data in a zipped file, and add test cases.
Fixed order of #includes.
Fixed compilation error on Linux: remove unnecessary qualification.
Removed erroneous but unused function.
Used proper way for detecting Python3 library from VCPKG, now that the Python port has been fixed.
Changed Linux compilation of VCPKG dependencies to use static libraries.
Unfortunately compiling them as dynamic libraries does not work for all libraries, especially GDAL.
Removed some unused code.
Removed from Java method that should not have been exported: StaticUtils::getUniqueIdentifier().
Refactoring: changed method name.
Updated documentation and port description for ExtractMapValues.
Refactorying: Removed unused code; Use of const.
Defined flag to treat missing submodels as errors when reading scripts.
Defined flag to treat missing submodels as errors when copying scripts.
Refactoring for C++17.
Add restriction to reset holder data only when model is not being debugged.
Changing compilation of VCPKG packages on Windows to only compile the release version of a package.
Updated CMake to version 3.23 to allow compatibility with Boost 1.79.
Added “pthreads” to the list of VCPKG dependencies to avoid some pitfalls when detecting installed libraries.
Enabled Link Time Optimization.
Add test cases to debugger.
Changing sorting priorities for #include files to avoid having the corresponding “.h” of a “.cpp” always first on the list.
Applied auto-formatting.
Avoid running the CalculateRExpression tests when R is not available in the system.
(PENDING) Temporarily, disable the use of GPU by CalcAreas until further investigation of what might be the cause of the wrong results on Linux.
Fixed compilation error on Linux: cannot bind non-const lvalue reference to an rvalue
Fixed case of incorrect conversion of string to path and vice-versa.
Added log messages.
Moved some version related definitions to the cmake configuration files for easier access and modification.
Fixed location where the Proj.4 related resources are located in the VCPKG package (the developers changed it again); Added additional test case to ensure that Proj.4 files are properly installed.
Comments and formatting.
Change the structure of the Debug Watcher.
Link the Debug Watcher to the NUI.
Enabled worker tests by default.
Updated copyright.
Updated version number.
Updated registry key references to DINAMICA_EGO_7.
Ensure the generation and installation of the Pip package manager when installing Python on Windows.
Fixed invalid argument.
Fixed compilation errors on Linux: missing header includes.
Ensure the generation and installation of the Pip package manager when installing Python on Linux.
Refactoring of CMake files.
Refactor the Debug Watcher. Add getter to Script Runner.
Fix a regression where the execution cancellation, when debugging, works only after debugger is completely paused (caused by commit 'Change the structure of the Debug Watcher.').
Generates the DLLs with LongPathAware policy embedded as part of their Manifest [it needs to to be complemented by another Manifest in dinamica.exe for it to work on the GUI].
Updated version number to 6.3.0.
Changed script permission on Linux to include execution.
Fixed error where the command line utility could not read or write “egomlx” script format.
Fixed name of variables/registry to refer to Dinamica EGO 7.
Fixed installation and crash on Linux:
Changed compilation scripts and CMake files to avoid incorrectly having static and dynamic versions of Python on the same build – that was causing a crash;
Changed location of GDAL utilities on Linux to make it compatible with the last version of VCPKG.
Removed file #include from Boost that is no longer used by Dinamica.
Remove incorrect dependency to Boost::Filesystem.
Changed compilation options to generate better debug symbols on Linux.
Fixed conversion from paths to strings to properly deal with std::filesystem.
Updated version number to 7.0.0.
Updated Windows build file to make them similar to their Linux counterparts.