Customizing

Java Server API

Die nachfolgenden Inhalte sind nur in englischer Sprache verfügbar.

This topic describes functions that the java server provides for Jython.

 All of the functions defined in the Java-class de.planta.server.webservice.WebHqlQueryHandler (name is for historic reasons) are used like this:

Python
from de.planta.server.webservice import WebHqlQueryHandler

dbhandler = WebHqlQueryHandler()
dbhandler.setJythonUser('R41')

Pojo Interface

For regular customizing, you should use the functions described in the  JythonUtilitiesPojoApi topic, as they wrap the following functions and make them easier to work with.


Method

Parameter(s)

Return Value

Comment

getPojo

entity: String, the entity name of the Pojo class that is queried
uuid:

 String, the uuid of the queried object

Returns a Pojo-Object (subclass of de.planta.server.hibernate.pojo.HibernatePojoClass)

Returns the Pojo-object identified by entity name & UUID, or None if not found

createPojo

entity: String, the entity name of the Pojo class that is created

Returns a new Pojo-Object (subclass of de.planta.server.hibernate.pojo.HibernatePojoClass)

Creates a new Pojo-object of the desired class

savePojo

pojo: HibernatePojoClass which is to be modified

Returns boolean indicating whether save-operation was successful
can raise de.planta.server.exception.PlantaEventException for errors occurring inside Events, or general Exception for other exceptions in Java/Native code

Updates all properties of the given Pojo that have been changed, and saves them in the database.

deletePojo

pojo: HibernatePojoClass which is to be deleted

Returns boolean indicating whether delete-operation was successful
can raise de.planta.server.exception.PlantaEventException for errors occurring inside Events, or general Exception for other exceptions in Java/Native code

Deletes the given Pojo from the database.

Pojo Class

Method

Parameters

Return Value

Comment

pojoOriginalValues


Returns a Java map which contains a string which identifies the DI (entityname) and original values as an object

Identical to DtpRecord.get_changed_dis

  • The functions that refer to a DI have a string parameter which identifies the corresponding DI. This is an entity name from DT412, not the DI number.

hasPropertyBeenUpdated 

String: propertyName

bool: True if DI has changed its value, but has not been saved yet, false otherwise

Identical to Dataitem.has_been_updated

pojoOriginalPropertyValue

String: propertyName

Original value of the DI (from database, before it was changed), data type differs based on the DIs DB type

Identical to

Dataitem.get_original_value


HQL Interface

For regular customizing you should use the functions described in the  JythonUtilitiesDatabaseApi  topic, as those wrap the following functions and make them easier to work with.


Method

Parameter(s)

Return Value

Comment

hqlQuery

hql:

 String, a HQL-statement

Returns as a list of objects in the form of a list of sublists

Is intended for Select-statements returning data from the database.

hqlModify

hql:

 String, a HQL-statement

Returns the number of modified records as an integer

Is intended for Insert/Update/Delete-Statements to the database.


Generic functions

Function

Parameter(s)

Return Value

Comment

setJythonUser

user:

String, User-Name


Remembers this user name for this Jython-session

getJythonUser


String: A user name

Returns User-name that was remembered by setJythonUser

uiMessageBox

caption:

String, caption of Message Box
message

 String, text of Message Box
icon:

 String, OLE-id of Message Icon
buttons:

 List of Strings which name the buttons in Message Box)
input_no

 Int, number of text fields in Message Box

Can raise de.planta.server.exception.SessionNotFoundException

This displays a message, identical to

ppms.ui_message_box

, with the exception that parameter blocking does not exist as message boxes that are displayed by Jython are NEVER blocking.
The first 2 parameters are mandatory, the rest can be omitted.
 This only works if the Jython-session is associated to a client-session. Otherwise, a SessionNotFoundException is raised.

uiMessageBoxId

id:

 String, the ID of the dialog message

Can raise de.planta.server.exception.SessionNotFoundException

This displays a message, identical to

ppms.ui_message_id

, which is never blocking in this case.
This only works if the Jython-session is associated to a client-session. Otherwise, a SessionNotFoundException is raised.

getAutoID

diId:

 String, id of a DI with Auto-Ids (e.g. "001400")

String: The next auto-number for this DI (with current license)


Can raise ClassNotFoundException, AutoIdOverflowException

Returns the next auto-number for this DI, or None if di_id does not denote a di using auto-numbers

openModule

thread:

 Long, ID for a currently running session
module:

 String, ID of the module to open
dictionary:

 Hashmap<String, Object>, a dictionary containing variables for the module

Returns boolean indicating whether the module could be found and prepared


Can raise

de.planta.server.exception.SessionNotFoundException, de.planta.server.exception.ModuleNotFoundException, de.planta.server.exception.ModuleDictionaryException

Prepares the module identified by module ID to be opened in the Client-session identified by thread-id (if existing).
Note: This is an asynchronous call, which means that openModule will finish before the module is actually opened. That is why the return value does not indicate whether the module was opened successfully but only whether a module & a thread with the requested IDs exist
After the module is opened, the new Python-callback-function on_web_load(Dictionary) is called with the parameters given to openModule.
The parameter-dictionary supports parameters of the Boolean, String, Integer, Float type or lists thereof.
Should be used via the jython.server.module.open_module Jython function

getSessionUser

threadId: Long, ID of a session


To get the user that started a specific Client session

getSessionInfo

threadId: Long, ID of a session


SessionInfo is a Java-class that holds various information about a session, including:
SessionInfo.getUser()) <- This is identical to WebHqlQueryHandler.getSessionUser
SessionInfo.getTimeStamp() <- Future functionality that is not really implemented yet; currently, always start time
SessionInfo.getSessionUUID() <- A unique UUID for each SessionInfo, used to identify a record in DT 443.
SessionInfo.getStartTime()
SessionInfo.getEndTime() <- Always NULL if the session is still active; is the end-time of a historical session. Can be identified by its UUID.
SessionInfo.getReason()  <- Why a historical session was terminated: Error or clean shutdown. Can be identified by its UUID