SdaiTerm, the Terminal Interface for J-SDAI

Lothar Klein, LKSoftWare GmbH,     last updated 1999/04/29

Purpose

SDAI defines an Application Programming Interface (API) on persistent data. But SDAI does not define a User Interface (UI). Therefore we create SdaiTerm which is a low level User Interface for J-SDAI.

The purpose of J-SDAI is:
- to analyse the state and version of a J-SDAI
- to check and modify the available Express-Schemas, SdaiRepositories, SdaiModels and Schema-Instances
- to play around with J-SDAI and learn in an interactive way how to operate on it without writing a Java program

SdaiTerm is not a Graphical User Interface. Instead it is a command line oriented User Interface. Because of this you can easily use it to maintain an J-SDAI installation on a remote computer via telnet.

You may also want to know how SdaiTerm is programmed. Have a look to SdaiTerm.java.

General

There are not much words to say on SdaiTerm. All it does is a link between the SDAI operations and the standard IO channels.
For this we have commands consisting of 1 or 2 characters and parameters as needed. The first character specifies the kind of object on which to operate; e.g. 's' for SdaiSession, 'r' for SdaiRepository, 'm' for SdaiModel and so on. The second character specifies the operation; e.g. 'o' for open and 'c' for close. An overview of the commands is given with the single character command '?'. Detailed help about a particular object is available with '?' followed why the character for the object type.

SdaiTerm is included in the J-SDAI runtime environment. After installation of Java and J-SDAI you can start StaiTerm with:

>java jsdai.util.SdaiTerm

Course 1

We want to check whether or not JavaSdai is running at all and which repositories and Express-Schemas are available. While doing this we also check the correct installation of J-SDAI (file jsdai_s.jar or jsdai_m.jar or jsdai_m.jar).
Start SdaiTerm and enter the following command after the ":" prompt
You will see something like this
 
D:\LKSOFT\EXAMPLES>java SdaiTerm
:?
Terminal Interface for J-SDAI(TM), Version 0.6,  Copyright 1998-2003 LKSoftWare GmbH
-------------------------------------------------------------------------------
      SdaiSession s: o(open)  m(import-r) i(implementation) l(list)
                     c(close) r(create-r) f(find-r)
  SdaiTransaction t: r(start read only)  c(commit) e(end+commit)   i(info)
                     w(start read write) a(abort)  b(abort+commit)
   SdaiRepository r: =(nr) o(open)  d(delete) i(info) s(create-c)
                   :       c(close) e(export) l(list) m(create-m)
        SdaiModel m: d(delete) r(startReadOnly)  e(endReadOnly)  p(promote)
                   : n(rename) w(startReadWrite) f(endReadWrite) i(info)
                   : =(nr) c(create) g(get) l(list) q(query)
     EntityExtent x: =(nr) i(info) l(list)
  EntitDefinition e: =(nr)
   EntityInstance i: =(nr) i(info) l(list)
        Attribute u: =(nr) s(set) u(unset) c(create) i(info) l(list_aggr)
        Aggregate a: =(nr) s(set) u(unset) c(create) l(list)
           Member b: =(nr) s(set) u(unset) i(info) l(list)
schema_definition h: =(nr) i(info)
   SchemaInstance c: =(nr) d(dictionary) i(info) l(list)
             help ?: s, t, r, m, x, e, i, u, a, b, h, c
             quit q:
-------------------------------------------------------------------------------
:?s
Terminal Interface for J-SDAI(TM), Version 0.6,  Copyright 1998-2003 LKSoftWare GmbH
-------------------------------------------------------------------------------
     Object            Return value          Method
-------------------------------------------------------------------------------
so : SdaiSession:       SdaiSession           openSession()
sc : SdaiSession:       void                  closeSession()
si : SdaiSession:       Implementation        getSdai_implementation()
sl : SdaiSession:       ASdaiRepository       getKnown_servers()
sr : SdaiSession:       SdaiRepository        createRepository(s1,s2)
sm : SdaiSession:       SdaiRepository        importClearTextEncoding(s2,s1,s3)
sf : SdaiSession:       SdaiRepository        findRepository(s1)
-------------------------------------------------------------------------------
:so
:si
----------- Implementation -------------
                      name: J-SDAI MULTIPLE
                     level: lang=1.1 (Build 58, 990308)
              sdai_version: { iso standard 10303 part(22) version(0) }
           binding_version: Java-SDAI conformance level 3, ISO TC184/SC4/WG11/N0
60
      implementation_class: 5
         transaction_level: 3
          expression_level: 1
           recording_level: 1
               scope_level: 1
  domain_equivalence_level: 2
:sl
1+DICTIONARY_DATA : null
2:CONCEPTUAL PART EXAMPLE : SDAI.lang.A_string@849488b
3:53711_75757f91-2_na.224 : SDAI.lang.A_string@8a294884
:sc
:q

Course 2

Import a p21-file, see what it contains, select an instance,, change an attribute and export the reslt into a new p21 file.
 
  • :so    // open SdaiSession
  • :tw    // start transaction read/write access
  • :sm test.p21    // import the physical file "test.p21" into a new repository
  • :ri    // display some information of the repository
  • :rl    // show the contents of the repository
  • :m=1    // select the first model
  • :mi    // display some information of the model
  • :ml    // list the entit_extents of the populated folders of the model
  • :x=112  // select the 112th entit_extent
  • :xi    // disply the entity type of the selected entity extent
  • :xl    // list all application instances of this type
  • :i=1101 // select instance #1101
  • :ii    // disply the selected instance
  • :il    // list the attributes of the selected instance
  • :a=1    // select the first attribute of this instance
  • :au @i0    // unset the attribute
  • :as @i0 MyName  // set a string for this attribute
  • :ii    // check the result
  • :tc    // commit the transaction to make the changes permanent in the repository
  • :re xxx.p21  // export the repository into a new physical file "xxx.p21"
  • :mf    // end read-write access
  • :te    // end the transaction
  • :q     // quit SdaiTerm

  •  
    d:\_STEP\util>java SdaiTerm
    :so
    :tw
    :sm test.p21
    :ri
    --------------- Repository -------------
                          name: CONCEPTUAL PART EXAMPLE
                   description: THIS IS A SAMPLE AP203 STEP MODEL
                    time_stamp: 1994-07-10 T15:30:00
                        author: LORI BRINDLE
                  organization: PDES, Inc.
                 authorization: APPROVED BY LARRY MCKEE
          preprocessor_version: NO VERSION
            originating_system: HAND POPULATED
    :rl
    ---models
    1: model1
    ---schemas
    2: schema1
    :m=1
    :mi
                          name: model1
             underlying_schema: CONFIG_CONTROL_DESIGN
                    repository: CONCEPTUAL PART EXAMPLE
                   change_date: 1998-12-05 T12:30:07
                          mode: ---
    :ml
    ...
    105 folder: PRODUCT_DEFINITION_USAGE
    106 folder: PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS
    107 folder: PRODUCT_RELATED_PRODUCT_CATEGORY
    108 folder: PROMISSORY_USAGE_OCCURRENCE
    109 folder: PROPERTY_DEFINITION
    110 folder: PROPERTY_DEFINITION_REPRESENTATION
    111 folder: QUANTIFIED_ASSEMBLY_COMPONENT_USAGE
    112 folder: REPRESENTATION
    113 folder: REPRESENTATION_CONTEXT
    114 folder: REPRESENTATION_ITEM
    ...
    :x=112
    :xi
     name: REPRESENTATION
    :xl
    #1101=GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION('gbwr1',(#1100,#1074),#1099);
    #2101=GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION('gbwr2',(#2100,#2051),#2099);
    #3101=GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION('gbwr3',(#3100,#3051),#3099);
    #4101=GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION('gbwr4',(#4100,#4051),#4099);
    #5101=GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION('gbwr5',(#5100,#5071),#5099);
    #7101=GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION('gbwr6',(#7006,#7012,#7018,#7024,#7030,#70
    04,#7010,#7016,#7022,#7028,#7034),#7099);
    #7401=SHAPE_REPRESENTATION('gbwr7',(#7037),#7099);
    #7402=SHAPE_REPRESENTATION('gbwr8',(#7038),#7099);
    #7403=SHAPE_REPRESENTATION('gbwr9',(#7039),#7099);
    #7404=SHAPE_REPRESENTATION('gbwr10',(#7040),#7099);
    #7405=SHAPE_REPRESENTATION('gbwr11',(#7041),#7099);
    :i=1101
    :ii
    #1101=GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION('gbwr1',(#1100,#1074),#1099);
    :il
    #1101=GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION('gbwr1',(#1100,#1074),#1099);
    REPRESENTATION
      1 name= 'gbwr1'
      2 items ( SET )  = (   #1100  #1074 )
      3 context_of_items = #1099 GEOMETRIC_REPRESENTATION_CONTEXT$GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT$GLO
    BAL_UNIT_ASSIGNED_CONTEXT
    SHAPE_REPRESENTATION
    GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION
    :a=1
    :au @i0
    SHAPE_REPRESENTATION
      1 name UNSET
    :as @i0 MyName
    SHAPE_REPRESENTATION
      1 name
    :ii
    #1101=GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION('MyName',(#1100,#1074),#1099);
    :tc
    :re xxx.p21
    :mf
    :te
    :q

    d:\_STEP\util>