Java Server API
This topic describes functions that the java server provides for Jython.
All of these functions are defined in the Java-class de.planta.server.webservice.WebHqlQueryHandler (name is for historic reasons), used like this:
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 those 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 if save-operation was successful can raise de.planta.server.exception.PlantaEventException for errors happening 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 it into the database. |
deletePojo | pojo: HibernatePojoClass which is to be deleted | returns boolean indicating if delete-operation was successful can raise de.planta.server.exception.PlantaEventException for errors happening 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
| |
hasPropertyBeenUpdated | String: propertyName | bool: True if DI has changed its value, but 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 integer | Is intended for Insert/Update/Delete-Statements into 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 the 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. If not, 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. If not, 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)
| Returns the next auto-number for this DI, or None if di_id does not denote a di using auto-numbers |
getActiveClientSessions | Long-Array: IDs of currently active User-Sessions | Returns the IDs of all user-sessions that are currently active, as an Array of Long-values. Intended to be used in conjunction with functions like openModule & getReturnValueForModule | |
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 | boolean: Indicating if the module could be found and prepared
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). |
getReturnValueForModule | thread: Long, ID for a currently running session module: String, ID of the module to open | Dictionary: The return value of on_web_load of the module which was called in this thread can raise de.planta.server.exception.SessionNotFoundException, | The return value is a dictionary of the same type as the dictionary of openModule. |
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()) <- That's identical to WebHqlQueryHandler.getSessionUser SessionInfo.getTimeStamp() <- Future functionality that's 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 |
Clientless session
A clientless session is a special session that (like the name suggests) runs without GUI-client or webclient.
It is controlled by Jython-functions and identified /accessed by a unique (random) ID that the server assigns when it is created.
Function | Parameter(s) | Return Value | Comment |
---|---|---|---|
openClientlessSession | user: String, name of the user which starts this session (e.g. P20) | Unique ID of the new clientless session can raise de.planta.server.exception.UserNotFoundException | Starts the session. The session stays open until closeClientlessSession is called. |
openModuleByClientlessId | clientlessSessionId: Int. The return value of openClientlessSession, to identify the session in question. | Returns boolean indicating if the module could be found and prepared can raise de.planta.server.exception.ClientlessSessionNotFoundException de.planta.server.exception.ModuleNotFoundException | This function is identical to openModule, with the only exception that it is called with clientless Id instead of thread-id. (see there for description of parameters and functionality). Therefor, it also executes the special python-event on_web_load. |
getReturnValueForModuleByClientlessId | clientlessSessionId: Int. The return value of openClientlessSession, to identify the session in question. | Dictionary: The return value of on_web_load of the module which was called in this thread can raise de.planta.server.exception.SessionNotFoundException, | Get the return value of on_web_load of module. (see there for description of parameters and functionality). |
closeClientlessSession | clientlessSessionId: Int. The ireturn value of openClientlessSession, to identify the session in question. | void can raise de.planta.server.exception.ClientlessSessionNotFoundException | Closes the session |
openClientlessSession | user: String, name oft he user which starts this session (e.g. P20), module: String, ID of the module to open | Unique ID of the new clientless session can raise de.planta.server.exception.UserNotFoundException | Opens a new clientless session and executes a module in it. new_id = openClientlessSession(user) |