Simantics 1.18.1

Release date: 20.5.2015

Originally scheduled for 16.1.2015, delayed a lot due to dependent product release stabilization problems.
Changes introduced in Simantics 1.13.5 are also part of the changes made between 1.17.1 and 1.18.1.

User-visible changes

Issue Type Description
#5509 Bug Spreadsheet now supports also copying of cells with float, integer or long values.
#5519 Bug Fixes for DB's ExternalRead exception handling.
#5535 Bug Fixed problems with lost parameters when using modelled SWT dialogs.
#5536 Bug Fixed regression causing dragging of subscription items on top of charts to do nothing. The regression was introduced in 1.16.1.
#5564 Bug Edit Style dialog no longer forcefully sets a font when -- keep current font -- is selected from the font list
#5565 Bug All dependencies on gnu.trove2 replaced with gnu.trove3.
#5568 Bug SCL default operator precedence changed to 9 as in Haskell so `foo` binds tighter than $, where foo is a binary function.
#5593 Bug Fixed set value operation to work also for other numeric types than Double in user component state properties.
#5599 Bug Fixed NPE from Variable Debugger view that occurred when variable had no resource representation.
#5614 Bug Fixed Simantics facade SCL function application code to take ReadGraph argument properly into account when updating the SCL evaluation context.
#5627 Bug Allow solver variable NodeValueRequest to produce null values even when a databoard binding is defined for the request.
#5630 Bug
* Fixed component type editor to set proper L0.HasValueType properties for values
  when user modifies a state property's type in the user component configuration editor.
* Fixed org.simantics.selectionview.All to set a proper L0.HasValueType value for newly
  created literal values if necessary (calculated value type differs from the asserted one)
* Fixed PropertyInfoRequest to resolve requiredValueType from L0.HasRange + L0.HasValueType
  definitions if that is the only thing that is defined for a property relation.
#5636 Bug Prevent DnD monitor editing when visualized variable #readOnly property is true
#5641 Bug Consider binary chart item label text width when laying out the contents of the chart editor.
#5642 Bug Standard modeling viewpoint used by Model Browser now lists spreadsheet books found under generic libraries.
#5655 Bug Removed green bullet image from the terminal info shown in the status line when the control key is pressed and hovering on top of an element terminal.
#5668 Bug Fixed CaseInsensitiveComponentFunctionNamingStrategy to not throw unexpected exceptions whilst looking for L0.HasName properties from index results. The indexing system can't currently guarantee that the results gotten directly from the index are 100% up-to-date with the current database contents and therefore all results must be handled as if they might no longer exist.
#5680 Bug Added/reactivated console commands for the database server process. These commands can be useful in debug situations where the server is the only thing user has for accessing corrupted data. Database client now uses the console commands to track the state of the server. Also added support for deletion of cluster(s) which is currently available via scl command emptyTrashBin. Currently only deleted models are moved to trash bin which can then be purged with the fore mentioned scl command.
#5682 Bug Simantics/Model.allModels function now only returns results that are instances of SIMU.Model.
#5685 Bug Default spreadsheet TableCell's row and column span to 1 instead of 0.
#5696 Bug Fixed database cluster bookkeeping bug from the latest database server/client implementation.
#5707 Bug Fixed NPE from GraphExplorer's GENodeQueryManager.
#5715 Bug Prevent user from creating diagram monitors by dragging properties to diagram if the source component of the monitor is not from the same model configuration as the as the target diagram. Allowing this caused export problems due to unexpected broken links between models.
#5718 Bug Allow structural variable synchronization to break reference loops that may occur in model's where components reference each other.
#5720 Bug Prevent giving user component interface properties same names as are already given to UC terminals. Also always modify all terminal and symbol terminal names when one of them is modified to keep them in sync. Previously symbol terminals could be renamed separately due to a regression. This could cause UC version migration to malfunction.
#5721 Bug Fixed diagram export name escaping to be complete with all different name segments properly escaped. Note: This makes the diagram export format incompatible with previous versions.
#5735 Bug Small usability improvements for user component/symbol/shared library migration wizard.
#5736 Bug Fixed AnnotationTypeLabelRule not to throw unexpected DoesNotContainValueExceptions which can happen when data is removed and queries are updated.
#5757 Bug Fixed DnD monitor expression (inverse) evaluation (parsing) to work also with properties whose name doesn't start with capital letters [A-Z] since in SCL all variable names must start with lower-case letters [a-z].
#5763 Bug Fixed StandardGraphPropertyVariable regression caused by r30486 in Simantics 1.17.1.
#5803 Bug Performance optimization and listening fixes for subscription item labeling in Model Browser.
#5812 Bug Better text editor for procedural user component code based on Eclipse TextEditor. Undo/Redo now works properly.
#5817 Bug Diagram element -related issue paths are now shown in unescaped form, not as escaped related URIs.
#5826 Bug Improved subtyping tolerance in diagram profile MappedTypeGroup implementation.
#5828 Bug Fixed handling of let and do blocks in SCL console.
#5835 Bug Event view Mark/Unmark Milestone actions have been fixed to recalculate milestone event indexes.
#5837 Bug Fixes for database recovery to prevent producing a broken database as a result of the recovery procedure.
#4556 Feature Implemented simple non-blocking (timeouting) synchronous database request facilities on top of the existing database API. This allows implementing certain UI functionality, such as platform PropertyTesters in a much less blocking manner to keep the UI more responsive even if the database does not respond.
#5432 Feature Purge operation added to database. Removes old history i.e. change sets from database. Before this the only way to purge old history was to export the database content, create new database and to import the exported content to the new database.
#5523 Feature Added new keyword 'hiding' to SCL and ability to include or exclude chosen symbols from import (see
#5549 Feature Allow users to try to interrupt SCL command execution using a stop button in SCL console.
#5590 Feature SCL compiler can now tell if an unresolved symbol is just written with wrong case letters
#5603 Feature Spreadheet improvements: queries, expression ranges, input source selection, input encoding hardening
#5604 Feature Allow ontology-based contribution of an SCL text editor in SWT document UIs
#5651 Feature First version of the Simantics Transformation Language included in SCL
#5657 Feature New extension point org.simantics.startup for contributing code to be executed in before Simantics platform startup that can potentially prevent platform and thus program startup.
#5662 Feature SCL console import handling improved. Imports can now be managed in a separate dialog that allows the user to import SCL module in different ways. It also allows users to control whether the imports are enabled/disabled and persistent/transient. Transient imports go away when user closes and reopens the SCL console.
#5663 Feature Back/Forward buttons added to SCL documentation browser
#5670 Feature Added http://Projects/TrashBin folder for storing deleted models until they are eventually garbage collected, i.e. deleted from there using optimized code. See Simantics/DBSupport SCL module for the related SCL function emptyTrashBin.
#5677 Feature Generic structural variable synchronization logic fixes for attached components.
#5693 Feature Added missing undo point marking to most known UI operations to prevent undo from returning the database state too far back into the past in one operation. Also made it easier to mark undo points by adding the API method markUndoPoint to org.simantics.db.Session interface. This makes it possible to mark an undo point without starting a transaction which often makes UI code cleaner and easier to write.
#5659 Support Removed APIs that were deprecated a long time ago and supposed to be removed in Simantics 1.8.
#4304 Enhancement Numerous additions and changes to the Simantics SCL APIs mainly for unit testing purposes. There are too many changes to enumerate.
#5354 Enhancement Perform spreadsheet cell updates within a spreadsheet transaction for better synchronization.
#5468 Enhancement Resolved problems that prevented Simantics codebase compilation with JavaSE 1.8.
#5472 Enhancement Improved API to SCL module and expression compiler including classes representing compilation environments. Expression compilation speed improvements: some expressions are compiled even 10 times faster.
#5492 Enhancement
* SCL console accepts multiple commands (including imports) at the same time
* Function runFromFile supports comments, empty lines and recursive function defintions consisting of multiple definition lines
* Similar improvements to runTest
#5493 Enhancement DB query semantics changed: if query result doesn't change with respect to equals(), the old value is retained in cache instead of the new one
#5496 Enhancement RuntimeEnvironmentRequest moved from org.simantics.scl.db to org.simanics.db.layer0
#5499 Enhancement Added L0.HasDefaultLiteralType for telling relations which type to use for new literals
#5501 Enhancement When SCL modules are changed, only modified modules and their dependencies are recompiled
#5518 Enhancement Added a mechanism to configure SCL tests from Simantics plugins by putting them into sclTests folder. The tests can be run with methods in Commands/Tests -module.
#5521 Enhancement SCL module text editors are once again properly restored after restart
#5525 Enhancement Added CTRL+SHIFT+Q S shortcut for opening the SCL console
#5534 Enhancement Support for variables from by solver-provided node managers has been extended by allowing property nodes to contain sub-properties and child nodes.
#5553 Enhancement Error prints from SCL commands are now redirected to the SCL console if the command was issued there.
#5585 Enhancement Array, record and variant -typed values can now be accessed through Variable interfaces using any compatible SCL datatype.
#5586 Enhancement Added Javadoc in selected places and cleaned some repetitive code. Also many plug-ins changes from 1.6 to 1.7 Java compatibility.
#5592 Enhancement Left alignment for all columns in Change Information view table
#5597 Enhancement The log file simantics.log is now written into the workspace directory instead of the program working directory.
#5598 Enhancement Minor excel link improvements.
#5600 Enhancement Improved transferable graph (TG) root analysis in IImportAdvisor2 by adding RootInfo class to store information about graph roots during the import procedure.
#5601 Enhancement Added new Selection view tab contribution for SHEET.SpreadSheet instances that shows the expressions producing the contents of cell ranges.
#5602 Enhancement Added button and dialog for easier lifting of component type contained component properties to component type interface. See Lift Property button in the component type interface editor.
#5607 Enhancement Large removal operations optimized to work based on transferable graph export and write-only DB requests.
#5610 Enhancement PROJECT.Contributions.ModelChildren now only contributes SIMU.Model children to model browser.
#5622 Enhancement Procedural component properties that produce null values are now ignored and warned about in <workspace>/db-client.log.
#5626 Enhancement Support also relations defined in ontologies in component type migration. Works by browsing for the properties through the component type with L0.DomainOf.
#5640 Enhancement Support expressions in procedural component type properties
#5660 Enhancement Purge resolve issues in Issue view no longer purges issues that are created by so called continuous issue sources or real-time issue sources that update issues based database changes in real-time. Purging, i.e. deleting such issues will only result in their reappearance while taking a considerable amount of time both delete and recreate with no real effect. So purging now only deletes isisues that have been marked resolved and are created by batch issue sources.
#5694 Enhancement PDF export wizard now sorts model configuration tree items using AlphanumComparator instead of ViewerSorter.
#5698 Enhancement Diagram DnD monitor property view formatting field options are now sorted more logically. Previously the sorting was random (hash-based).
#5704 Enhancement Cleaned up code in org.simantics.db.layer0.migration.
#5711 Enhancement Allow selecting existing models as spreadsheet input.
#5756 Enhancement Fixed TG import performance bottleneck from MigrationStateImpl code path that is used when the imported TG has been preprocessed. The problem caused the code to write the TG into the database using WriteRequest instead of WriteOnlyRequest. This caused the import to be 3-4 times slower than with WriteOnlyRequest.
#5822 Enhancement Improved UI reponsiveness during full model issue batch validation
#5827 Enhancement Added support for defining profile entries where only one of the sibling profile entries can be enabled at any given time.
#5836 Enhancement Annotation type, diagram template and shared library export wizards now enforce the use of their respective file extensions for all exported files (.annotationType, .diagramTemplate, .sharedLibrary).
#5839 Enhancement "Use timeouting (non-blocking) database requests for platform implementations requiring synchronous DB access in the UI thread. The timeouts can be customized at startup using the following system properties:

where the shown values are the current default values.
#5853 Enhancement URI based document link references for referring documents that are not part of model structure.

Developer-visible changes

Issue Type Description
#5486 Bug SCL compiler now accepts an empty SCL module
#5543 Bug Fixed hazardous implementation fo EString.implode(Object[]) that did not take character sets properly into account.
#5562 Bug StandardModelingrules.judgeConnection now returns a deterministic connection type based on alphanumeric connection type name sorting a possibly unfinished connection has multiple possible connection types.
#5625 Bug re-entrant syncExec support added for SCLRealm. Executes synchronously when already in executor thread.
#5623 Feature Added AbstractExpressionCompilationRequest.getExpressionEffects for determining the effects of SCL expressions.
#5629 Feature new structural utility request: org.simantics.structural2.queries.GetComponentLocation
#5676 Feature databoard can now adapt records to other records containing added fields. Previously this has worked only if the field was an any Object and defined @Optional. The added fields are given values based on the default value of each data type.
#5705 Feature added possibility to remove variable bindings from SCL CommandSession
#5724 Feature Added possibility to define post-migration actions for user component type migration. To do this, implement org.simantics.modeling.migration.UserComponentPostMigrationAction and add a database adapter for your implementation.
#5801 Feature ported old utility to for creating random but visually distinct colors
#5708 Support Removed long-time deprecated API from WriteOnlyGraph and WriteGraph: addValue + claimValue methods that were replaced by addLiteral and claimLiteral.
#5488 Enhancement Package com.kitfox.svg.xml is now exported by org.simantics.scenegraph.
#5497 Enhancement new methods in Variable interface:
* getPropertyInfo
* getIndexRoot
#5498 Enhancement all old and deprecated Variable implementations have been removed
#5537 Enhancement Variable.adaptPossible implementations should throw and catch as little exceptions as possible internally.
#5540 Enhancement
* Realization interface has been removed
* org.simantics.structural.flattening has been removed as unnecessary and deprecated
* org.simantics.scl.{types,replaying} have been removed

See the issue change sets for all details.
#5567 Enhancement NameUtils.getSafeLabel will now resort to returning resource name if the label is defined but empty.
#5594 Enhancement Exceptions occurring in simulator variable external read requests are now passed on to callers.
#5595 Enhancement org.simantics.browsing.ui.common.modifiers.Enumeration now implements equals and hashCode
#5596 Enhancement Silk companion ( icons have been made available to ontologies through plug-in.
#5606 Enhancement Allow using a modelled SCL function to test whether a selection view tab contribution shall be used or not for an input Variable.
#5638,#5751 Enhancement Upgraded UCanAccess plug-in (net.ucanaccess) to
#5661 Enhancement org.simantics.utils.ui.dialogs.ShowError now uses the same dialog for errors and errors with exceptions that allows the user to copy the error message text from the UI.
#5667 Enhancement added helper AbstractRemover.consultPossibleCanRemove
#5669 Enhancement Introduced a new way for modelling terminals that generate components under diagram connections. See Modeling.pgraph and MOD.ConnectionMappingSpecification.
#5706 Enhancement Removability and renameability in Model Browser can now be determined through ActionBrowseContext fir any NodeType. See TestContribution in code and ontology.
#5823 Enhancement Added possibility to define a dynamic line end style for route graph connection scene graph nodes. This allows diagram profiles to adjust e.g. line end scaling dynamically.
#5840 Enhancement Introduced new interface VariableNodeReadRunnable extends Runnable that indicates to the solver variable backend that the task is read-only regarding the solver. This adds a bit of freedom in optimizing for read-concurrency in the backend.
#5850 Enhancement profile view content is now adaptable to backend Resources which allows e.g. context menu construction based on profile view selection.