JSDAI v3.6.0

Changes in JSDAI version 3.6.0 since JSDAI v3.5.4.

JSDAI Runtime

  • Faster SDAI file operations
  • Move mapping support and database access out of the standard JSDAI into separte extensions
  • Mapping operation extensions and fixes; new algorithm for batch AIM to ARM conversion
  • Added simple export to P28ed2 XML files
  • Added automatic detection of STEP library jar files
  • Enhancements EXPRESS expressions evaluation for derived attributes, functions and procedures
    • class Value for any datatype value
  • New methods:
    • Implemented validation methods
      • EEntity: validateWhereRule()
      • SchemaInstance: validateUniquenessRule() and validateSchemaInstance()
    • EEntity: moveUsersFrom(), copyValuesFrom(), isValid()
    • SdaiContext: new constructor SdaiContext(SdaiModel)
    • SdaiRepository
      • copyFrom(ASchemaInstance)
      • copyFrom(SchemaInstance)
      • copyFrom(SdaiRepository)
      • getRealName() for SDAI Files
    • New query related methods:
      • QueryResultSet.getItemStruct(int, ItemStruct) with inner class ItemStruct
      • QuerySource and implementing classes CAggregate, SchemaInstance, SdaiModel, SdaiRepository, SdaiSession: getQuerySourceDomainRef() and getQuerySourceInstanceRef()
  • Speed optimizations for:
    • EEntity: get_inverse, findEntityInstanceUsedin, early binding usedinXxx methods, findInstanceRoles
    • SdaiModel: substituteInstance
  • SdaiDictionary, see also Changes in SDAI_dictionary_schema for v3.6
    • Remove of redunandent attributes for entity_definition and attribute
    • Introducing specific aggregates for inverse attributes. Correcting methods (early and late binding) for getting values of such attributes.
    • Appearance of two or more data types having the same name was eliminated. This is important because of public method SdaiSession.findDataType() which for a given name returns the corresponding instance of EData_type. From the current version of JSDAI this correspondence is unique.
  • Other enhancements
    • ExportClearTextEncoding: references to instances in outside repositories are shown in the file as unset values (dollar sign).
    • testByIndex: extended for non-persistent lists
    • substituteInstance: Retaining the same java Object for entity instance in the case when entity type definition of the existing instance coincides with that of its substitute.
  • Fixed bugs
    • Change behavior of substituteInstance() when type of instance does not change (816)
    • SdaiModel.getInstances(Class type) does not work under certain cases (839)
    • EEntity.copyApplicationInstance() (877)
    • get_inverse() (881)
    • SdaiModel.substituteInstance do not preserve common attributes (884)
    • exportClearTextEncoding causes java exception (891, 990)
    • incorrect working of SdaiRepository.findSchemaInstance() (896)
    • Incorrect resolving of virtual models (1002)
    • inverse_attribute type - incorrect return type of get methods (1004)
    • Removal of references to temporary repositories (the bug was that they survived in some cases after ceasing the existence of such repositories).
    • ASchemaInstance.getAssociatedModels() was rewritten. Its behaviour was correct locally but was wrong in the case of the remote connection.
    • SessionAggregate.attachIterator() was adapted for remote connection.
    • SdaiTransaction.abort() method was updated to restore the repository contents correctly. Wrong results appeared in some special cases for the combined situation of the remote connection and multiple sessions.

JSDAI Express Compiler

  • Support for RENAMED redeclared attributes for chained redeclarations of explicit attributes
  • Warnings about nested functions no longer generated if expressions are not enabled
  • New switch added: -enable_expressions (-ee)
  • Support for incremental compilation extended in the complex generator
  • Improved error reporting and recovery
  • Implemented interval expression support in expressions
  • Derived attributes of enumeration type supported in expressions.
  • Data types of inverse attributes changed to correspond to the ones declared in express (set/bag), also necessary changes in generated java classes.
  • Improvements in expressions, more precise types for aggregate local variables
  • Various bug fixes

JSDAI DB (Database)

This got an independent extension of the core JSDAI functionality on the client side, working together with the JSDAI SQL Bridge on relational databases.

  • Full support of MySQL v.4.1 and Oracle 9i
  • Changed SDAI transaction on DB to non locking commits; added a special exception type to track collision situations
  • Complete implementation of remote queries including query source handling
    • Added 3 levels of access to query results: using JSDAI objects for backward compatibility; using high level references; and using low level interface
  • Extended filtering on database and storing of STEP data in a way suitable for querying
  • Enhanced concurrent use stability
  • Fixed possible memory leaks
  • Enhanced Web Administration for workspace support
    • Updated webadmin tool to controll access rights
    • Move of access control from SdaiModel to SchemaInstance (= Workspace concept)
  • Enhanced installer tool
  • New backup tool
  • Optimized Bridge-Client communication
  • Added checking of EXPRESS schema versions to match version on the client.

JSDAI Mapping

JSDAI Mapping got an independent extension of the core JSDAI functionality.

  • Introducing of extended ARM schemas for AP214/212 (IDA-STEP) and AP210, linking directly to some parts of the integrated resources (ARM-X)
  • Major speed improvement for AIM to ARM-X Analysis
  • Mapping operation related additions
    • Class SdaiSession
      • convertMapping(MappingContext)
    • Interface EMappedARMEntity
      • assignMappedValue(SdaiContext, EExplicit_attribute, Object, ANamed_type)
      • assignMappedValue(SdaiContext, EExplicit_attribute, Object, Generic_attribute_mapping)
      • getNextArmInstance()
      • setAttributeState(int)
    • New class MappingContext
    • New interface MappingPopulationCreator