Class TdbSession

All Implemented Interfaces:
com.tietoenator.trip.jxp.internal.utils.DOMSink
Direct Known Subclasses:
TdbGridSession, TdbLocalSession, TdbPooledSession, TdbTripNetSession, TdbWebSession

public class TdbSession extends TdbMessageProvider implements com.tietoenator.trip.jxp.internal.utils.DOMSink
Construct and manage a session with a server
  • Method Details

    • getActivityLog

      public TdbActivityLogger getActivityLog()
      Retrieve a reference to the activity logger currently in use
      Returns:
      The logger instance in use
    • setActivityLog

      public void setActivityLog(TdbActivityLogger logger)
      Set the activity logger reference for this session
      Parameters:
      logger - The activity logger to use; set this to null to remove any pre-existing logger
    • getBackgroundTaskSink

      public TdbBackgroundTaskSink getBackgroundTaskSink()
      Retrieve a reference to the background task completion event sink currently in use
      Returns:
      Any event sink in use
    • setBackgroundTaskSink

      public void setBackgroundTaskSink(TdbBackgroundTaskSink sink)
      Establish the background task completion event sink to use
      Parameters:
      sink - Background task event sink
    • getNotificationSink

      public TdbNotificationSink getNotificationSink()
      Returns the current notification sink.
      Returns:
      A TdbNotificationSink instance or null if no notification sink is defined
    • setNotificationSink

      public void setNotificationSink(TdbNotificationSink sink) throws TdbException
      Assign a notification sink.

      This method does not cause the server to activate comforter notifications - they must still be explicitly enabled per type. The reason for this is to minimize unnecessary network communications. Only enable the notifications you actually are going to need.

      The detail level reported with of graph analysis notifications is set on the TdbGraph object being used.

      Parameters:
      sink - TdbNotificationSink object or null
      Throws:
      TdbException - Code TdbException.UNUSABLE_SESSION if the session is not of type TdbInterfaceType.NET
      See Also:
    • getSessionId

      public String getSessionId()
      Retrieve the established session ID -- this is obsolete as of TRIP6
      Returns:
      Any available session ID token
    • getUsername

      public String getUsername()
      Retrieve the calling user's TRIP username
      Returns:
      The user's TRIP username
    • dateforms

      public List<String> dateforms()
      Retrieve the list of available date forms supported by the server
      Returns:
      The list of available date forms
    • getDateform

      public String getDateform(int ix)
      Retrieves the dateform string for the dateform with the supplied type
      Parameters:
      ix - The type of dateform string to retrieve
      Returns:
      The appropriate dateform string or null if ix is invalid
    • getCurrentDateform

      public TdbDateform getCurrentDateform() throws TdbException
      Returns a TdbDateform instance for the current date format.
      Throws:
      TdbException
    • fieldTypes

      public List<String> fieldTypes()
      Retrieve the list of available field types supported by the server
      Returns:
      The list of available field types
    • getFieldType

      public String getFieldType(int ft)
      Retrieves the name of the field type specified
      Parameters:
      ft - The field type for which to retrieve the name
      Returns:
      The field type name
    • getFieldType

      public int getFieldType(String nm)
      Retrieves the ID of the named field type
      Parameters:
      nm - The name of the field type for which the ID is to be retrieved
      Returns:
      The field type identifier
    • subsystemNames

      public List<String> subsystemNames()
      Retrieve the list of available classification subsystems supported by the server
      Returns:
      The list of available subsystem names
    • getSubsystemName

      public String getSubsystemName(int st)
      Retrieves the name of classification subsystem with the supplied ID
      Parameters:
      st - The subsystem type ID
      Returns:
      The name of the subsystem
    • getSubsystemID

      public int getSubsystemID(String nm)
      Retrieves the ID of the classification subsystem with the supplied name
      Parameters:
      nm - The name of the subsystem
      Returns:
      The ID of the subsystem, or null if not found
    • getDefaultQueueName

      public String getDefaultQueueName()
      Retrieves the name of the default background task submission queue on the server
      Returns:
      The name of the default queue
    • isSystemManager

      public boolean isSystemManager()
      Returns true if the calling user is the SYSTEM user
      Returns:
      true / false depending on the calling user's SM status
    • isTicketsEnabled

      public boolean isTicketsEnabled()
      Returns true if login tickets are enabled on the server.
      Returns:
      true / false depending on if login tickets are enabled or not
      Since:
      8.0-4
      See Also:
    • isFileManager

      public boolean isFileManager()
      Returns true if the calling user has file manager privilege
      Returns:
      true / false depending on the calling user's FM status
    • isUserManager

      public boolean isUserManager()
      Returns true if the calling user has user manager privilege
      Returns:
      true / false depending on the calling user's UM status
    • isConnected

      public boolean isConnected()
      Returns true if there is a physical or networked connection to the server. This property always holds the value 'true' if the session is web or local.
      Returns:
      True if connected
    • getVersion

      public String getVersion()
      Retrieves the server's version string
      Returns:
      The server's version string
    • getRevisionNumber

      public String getRevisionNumber()
      Retrieves the server's revision number string
      Returns:
      The server's revision number string
    • getBuildNumber

      public String getBuildNumber()
      Retrieves the server's build version number string
      Returns:
      The server's build version number string
    • getPid

      public String getPid()
      Retrieves session pid on server
      Returns:
      Session pid on server
    • getCharacterSetName

      public String getCharacterSetName()
      Retrieves the name of the TRIP character set in use on the server
      Returns:
      The name of the active character set
    • getCharacterSet

      public TdbCharacterSet getCharacterSet()
      Retrieves the TRIP character set in use on the server
      Returns:
      The ID of the active character set
    • licensedProducts

      public List<String> licensedProducts()
      Retrieves a collection of named products for which the server is licensed
      Returns:
      The collection of currently licensed product names
    • requestLoginTicket

      public String requestLoginTicket() throws TdbException
      Request a new login ticket for the currently logged on user.
      Throws:
      TdbException -

      The returned value can be used instead of username and password, enabling an SSO-like behavhior for applications, in which the ticket would be stored as a cookie. To log in using the ticket, pass it in the password parameter of the Login method and set the username to an empty string.

      When requesting a new login ticket, the new ticket will replace any previous ticket assigned to the current user. Subsequent ticket-based login for the user must use the new ticket.

      The login ticket feature requries TRIPsystem 8.0 or later and must be explicitly enabled on the TRIP server in order to be used as it is disabled by default.

      Tickets time out after 30 days of inactivity by default. This period can be configured. Refer to the TRIPsystem documentation for more information.

    • revokeLoginTicket

      public void revokeLoginTicket(String ticket) throws TdbException
      Revoke the login ticket owned by the current user, or for the SYSTEM super user to revoke the ticket for another user.

      To revoke the login ticket for the current user, the ticket parameter can be null or an empty string. Specifying the login ticket explicitly is only required if the current user is SYSTEM and the goal is to revoke the ticket for another user.

      Parameters:
      ticket - Empty string or login ticket to revoke
      Throws:
      TdbException
      Since:
      8.0-4
    • isLicensedFor

      public boolean isLicensedFor(TdbProduct prod)
      Check if the server to which this session is connected is licensed for the supplied product code
      Parameters:
      prod - The product code to check
      Returns:
      true if the server is licensed for the product, false otherwise
    • getSessionType

      public TdbInterfaceType getSessionType()
      Retrieves the connection type for this session
      Returns:
      The connection type
    • isWorking

      public boolean isWorking()
      Check if the session (in reality the underlying HIF) is busy
      Returns:
      true if the server is currently doing something for us, otherwise false
    • getServerName

      public String getServerName()
      The name of the TRIP server that the session is connected to. This property returns the name or IP address of the TRIP server host that the session is connected to. For session types such as the TdbGridSession that do not connect to a single host known and specified by the JXP application, this method will return an empty string.
    • enableNotification

      public void enableNotification(TdbNotificationType type, boolean enable) throws TdbException
      Enables or disables notifications.

      When using this method to enable a notification type, a default interval will be used. This is 5 seconds for comforters. To enable a notification type with custom interval, use "EnableNotification(TdbNotificationType,int) instead.

      For your application to be able to react on notifications, you must also register a notification sink.

      Parameters:
      type - Notification type to enable or disable
      enable - True to enable and false to disable
      Throws:
      TdbException
      See Also:
    • enableNotification

      public void enableNotification(TdbNotificationType type, int notificationInterval) throws TdbException
      Enables search and sort comforter notifications with a specified preferred interval. For your application to be able to react on notifications, you must also register a notification sink.
      Parameters:
      type - Notification type to enable
      notificationInterval - Preferred interval in seconds between notifications (pass 0 for a server-chosen default)
      Throws:
      TdbException
    • writeActivityLog

      public void writeActivityLog(String value) throws TdbException
      Write an arbitrary string to the activity log (if any) associated with this session
      Parameters:
      value - The string to write to the log
      Throws:
      TdbException
    • supportsFeature

      public boolean supportsFeature(TdbTripFeature feature)
      Returns true if the version of TRIPsystem this session is connected to supports the specified feature.
      See Also:
    • validate

      public void validate(TdbInterfaceType type) throws TdbException
      Validate that this session refers to a compatible connection type
      Parameters:
      type - The type of connection to validate
      Throws:
      TdbException
    • authenticate

      public void authenticate(String username, String password) throws TdbException
      Authenticate with a grid.

      This method causes network I/O.

      Parameters:
      username - The TRIP username
      password - The TRIP password -- this gets encrypted for transmission
      Throws:
      TdbException
    • login

      public void login(String username, String password) throws TdbException
      Login to a TRIP server, using English CCL dialect, and disallowing restart.
      Parameters:
      username - The TRIP username to use
      password - The TRIP password to use
      Throws:
      TdbException -

      To log in with a login ticket, pass an empty string as the username and the ticket as the password.

      This method causes network I/O.

    • login

      public void login(String username, String password, TdbLanguage language, boolean restart) throws TdbException
      Login to a TRIP server.
      Parameters:
      username - The TRIP username to use
      password - The TRIP password to use (this gets encrypted for transmission)
      language - The CCL language dialect to use
      restart - If set high, signal TRIP to attempt to restart from a previous session
      Throws:
      TdbException -

      To log in with a login ticket, pass an empty string as the username and the ticket as the password.

      This method causes network I/O.

    • logout

      public void logout() throws TdbException
      Logout from the current session without saving state.

      This method causes network I/O.

      Throws:
      TdbException
    • logout

      public void logout(boolean save) throws TdbException
      Logout from a session created with login. This method must only be called from physical connections, and cannot be used with grid connections.

      This method causes network I/O.

      Parameters:
      save - Set true to signal the server to save the session file (*.SIF)
      Throws:
      TdbException
    • getControlCache

      public TdbControlCacheManager getControlCache()
      Get the CONTROL object cache manager associated with this session.

      Applicatons will normally request database design information with a high frequency, either explicitly or implicitly. The cache manager keeps such information locally when possible in order to keep network I/O to a minimum, resulting in a moderate performance boost.

    • isLoggedIn

      public boolean isLoggedIn()
      Returns true is session is connected and authenticated.
      Returns:
      true if logged in.
    • enableLogging

      public void enableLogging(boolean apilog, boolean xpilog) throws TdbException
      Enable or disable server-side API and/or XPI logging for the current sesssion.

      Session-specific server-side logging requires TRIPsystem 8.2-4 or later.

      Parameters:
      apilog - True to enable API logging
      xpilog - True to enable XPI logging
      Throws:
      TdbException - If the feature is not supported or if logging could not be toggled.
    • isApiLogEnabled

      public boolean isApiLogEnabled()
      Check if server-side API logging is enabled for the current sesssion.

      This property only returns true if API logging has been enabled via enableLogging method of the TdbSession class. Note that API logging globally enabled via the server-side tdbs.conf TRIPsystem configuration file is not reported here.

      Returns:
      True if session-specific server-side API logging is enabled for the current session.
      See Also:
    • isXpiLogEnabled

      public boolean isXpiLogEnabled()
      Check if server-side XPI logging is enabled for the current sesssion.

      This property only returns true if XPI logging has been enabled via enableLogging method of the TdbSession class. Note that API logging globally enabled via the server-side tdbs.conf TRIPsystem configuration file is not reported here.

      Returns:
      True if session-specific server-side XPI logging is enabled for the current session.
      See Also:
    • hasLogCheckpoint

      public boolean hasLogCheckpoint()
      Returns true if the session-specific server-side logging has been checkpointed.
      Returns:
      True if a log checkpoint has been set
      See Also:
    • setLogCheckpoint

      public void setLogCheckpoint() throws TdbException
      Set a checkpoint mark in the session-specific server-side logs from which log content can be retrieved.

      Use checkpointing in order to retrieve the latest section of intrest from the session-specific server-side logs instead of the full session logs.

      Session-specific server-side logging requires TRIPsystem 8.2-4 or later.

      Throws:
      TdbException - If the feature is not supported or if logging could not be toggled.
      See Also:
    • getServerApiLog

      public String getServerApiLog(boolean fromCheckpoint) throws TdbException
      Retieves the API log for the current session from the server.

      >If no checkpoint has been set, the full API log for the session will be returned instead.

      Session-specific server-side logging requires TRIPsystem 8.2-4 or later.

      Parameters:
      fromCheckpoint - True to retrieve log contents from set checkpoint, and false to retrieve the entire log.
      Throws:
      TdbException - If the feature is not supported or if logging could not be toggled.
    • getServerXpiLog

      public String getServerXpiLog(boolean fromCheckpoint) throws TdbException
      Retieves the XPI log for the current session from the server.

      >If no checkpoint has been set, the full XPI log for the session will be returned instead.

      Session-specific server-side logging requires TRIPsystem 8.2-4 or later.

      Parameters:
      fromCheckpoint - True to retrieve log contents from set checkpoint, and false to retrieve the entire log.
      Throws:
      TdbException - If the feature is not supported or if logging could not be toggled.