Automic Workload Automation

Get localized message from message number

  • 1.  Get localized message from message number

    Posted Mar 06, 2018 08:49 AM
    Edited by Michael A. Lowry Sep 22, 2023 05:27 PM

    In another thread, I pointed out the existence of the TranslatedMesage Java API class. Thanks to a pointer from Automic, and with a bit of trial-and-error, I was able to figure out how to use this class to return localized versions of arbitrary Automic messages, including status codes and error messages.

    package com.uc4.testing;
    
    import com.uc4.api.TranslatedMessage;
    import com.uc4.communication.Connection;
    import com.uc4.communication.ConnectionAttributes;
    import com.uc4.communication.requests.CreateSession;
    import com.uc4.api.MessageBox;
    import com.uc4.translate.Message;
    
    import java.io.IOException;
    
    public class Main {
    
        private static final String AE_IP_ADDRESS = "192.168.2.1";
        private static final int AE_IP_PORT = 2217;
        private static final int AE_CLIENT = 1;
        private static final String AE_USER = "AE_USER";
        private static final String AE_DEPT = "MYCORP";
        private static final String AE_PASSWORD = "XXXXXXXX";
        private static final char AE_LANG = 'E';
    
        public static Connection ConnectToAE() {
            boolean connected = false;
            Connection myConnection = null;
            CreateSession mySession = null;
            try {
                myConnection = Connection.open(AE_IP_ADDRESS, AE_IP_PORT);
                mySession = myConnection.login(AE_CLIENT, AE_USER, AE_DEPT, AE_PASSWORD, AE_LANG);
            } catch (IOException e) {
                e.printStackTrace();
            }
            MessageBox msgBox = mySession.getMessageBox();
            if (msgBox != null) {
                System.out.println("-‐-‐ Error: " + msgBox);
            }else{
                System.out.println("Connected successfully to Automation Engine.");
                if (mySession.isLoginSuccessful()){
                    System.out.println("User " + mySession.getUserName() + "(" + AE_USER + "/" + AE_DEPT +
                            ") successfully logged into " + mySession.getSystemName() + ". Session ID: " +
                            mySession.getSessionID() + ".");
                    System.out.println(mySession.getWelcomeMessage());
                }
                connected = true;
            }
            return myConnection;
        }
    
        public static boolean getTranslatedMessage(Connection myConnection, int messageNumber, String messageInsert) {
            ConnectionAttributes connAtt = new ConnectionAttributes();
            connAtt = myConnection.getSessionInfo();
            boolean isValid = connAtt.isValid();
            if (isValid) {
                Message translator = connAtt.getTranslator();
                if (translator != null) {
                    TranslatedMessage translatedMessage = new TranslatedMessage(messageNumber, messageInsert, translator);
                    char messageType = translatedMessage.getType();
                    String messageTypeText = "";
                    switch (messageType) {
                        case 'E':
                            messageTypeText = "ERROR";
                            break;
                        case 'W':
                            messageTypeText = "WARNING";
                            break;
                        case 'I':
                            messageTypeText = "INFO";
                            break;
                        case 'A':
                            messageTypeText = "ABORT";
                            break;
                        case 'Q':
                            messageTypeText = "QUESTION";
                            break;
                        case 'C':
                            messageTypeText = "CAPTION";
                            break;
                        case 'D':
                            messageTypeText = "SERVER";
                            break;
                        default:
                            messageTypeText = "UNKNOWN";
                            break;
                    }
                    String formattedMessageNumber = String.format("%08d",translatedMessage.getNumber());
                    String finalMessage = messageTypeText + ": U" + formattedMessageNumber + " " + translatedMessage.getText();
                    System.out.println(finalMessage);
                }else{
                    System.out.println("Translator is null!");
                    exit();
                }
            } else {
                System.out.println("Connection is NOT valid.");
                exit();
            }
            return isValid;
        }
    
        private static void exit() {
            System.exit(200);
        }
    
        public static void main(String[] args) {
            if (args.length < 2) {
                System.out.println("Please provide a message number, and optionally, a message insert string."); exit();
            }
            int messageNumber = Integer.parseInt(args[0]);
            String messageInsert = args[1];
            System.out.println("Message number: " + String.valueOf(messageNumber));
            System.out.println("Message insert: " + messageInsert);
            Connection myConnection = ConnectToAE();
            getTranslatedMessage(myConnection, messageNumber, messageInsert);
        }
    }


    Run the program with one or two arguments:

    1. The message number
    2. The message insert string (optional)

    The message number is an integer corresponding to the message number in the messages documentation.
    The message insert string is a vertical bar-delimited string containing zero or more message inserts. Not all messages have inserts. These appear as &1, &2, &3, etc. in the messages documentation and uc.msl file.

    Example 1. Return status text for status code 1700

    Message number: 1700
    Message insert:
    Connected successfully to Automation Engine.
    User Test(
    AE_USER/MYCORP) successfully logged into UC4_EXP2. Session ID: 0000000002910205.
    Log on of 'Test User' successful, your last session:  '2018-03-06' at '12:07:14'.

    Localized message:
    SERVER: U00001700 Waiting for predecessor

    Example 2. Print message U00011191

    Message number: 11191
    Message insert: 12345678
    Connected successfully to Automation Engine.
    User Test User (AE_USER/MYCORP) successfully logged into UC4_EXP2. Session ID: 0000000002910202.
    Log on of 'Test User' successful, your last session:  '2018-03-06' at '12:20:56'.

    Localized message:
    ERROR: U00011191 Task with RunID '12345678' is not active.

    Example 3. Print message U00010002

    Message number: 10002
    Message insert: UC0.TEST1.JOBI|UC0.TEST1.SCRI|5
    Connected successfully to Automation Engine.
    User Test User (AE_USER/MYCORP) successfully logged into UC4_EXP2. Session ID: 0000000002910202.
    Log on of 'Test User' successful, your last session:  '2018-03-06' at '12:23:35'.

    Localized message:
    ERROR: U00010002 Include 'UC0.TEST1.JOBI' not found in object 'UC0.TEST1.SCRI', line '5'.

    To change the localization language to German or French, just change the value of the AE_LANG variable in the program to D or F, respectively. Enjoy!