Package tcg.scada.event

Source Code of tcg.scada.event.EventClientTest

package tcg.scada.event;

import java.util.Scanner;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
import org.omg.CORBA.Object;

import tcg.common.CorbaHelper;
import tcg.scada.cos.ICosEventServer;
import tcg.scada.cos.ICosEventServerHelper;
import tcg.syscontrol.GenericAgentTest;
import tcg.syscontrol.cos.DEFAULT_EVENT_PORT;
import tcg.syscontrol.cos.ICosManagedProcess;
import tcg.syscontrol.cos.ICosManagedProcessHelper;
import tcg.syscontrol.cos.STR_EVENT_SERVER;

public class EventClientTest
{

  public static Logger logger_ = Logger.getLogger(GenericAgentTest.class
      .toString());

  private static ICosEventServer eventServer = null;
  private static int eventCtx = 0;

  /**
   * @param args
   */
  public static void main(String[] args)
  {
    // TODO Auto-generated method stub
    final String prompt = "Event (\'q\' to quit): ";

    BasicConfigurator.configure();

    CorbaHelper.getInstance();

    String ior = "corbaloc::localhost:" + DEFAULT_EVENT_PORT.value + "/"
        + STR_EVENT_SERVER.value;
    logger_.info("IOR: " + ior);

    try
    {
      // Object obj = orb_.string_to_object(ior);
      Object obj = CorbaHelper.stringToObject(ior);
      eventServer = ICosEventServerHelper.narrow(obj);
    }
    catch (Exception ex)
    {
      logger_.error("Can not get reference to process manager: " + ior
          + ". " + "Exception: " + ex.toString());
      return;
    }

    if (eventServer == null)
    {
      logger_.error("Can not get reference to process manager: " + ior);
      return;
    }

    // register with event server
    try
    {
      eventCtx = eventServer.cosCreateEventContext("SYSTEM",
          java.net.InetAddress.getLocalHost().getHostName(),
          "TESTCLIENT", 10000);
      if (eventCtx == 0)
      {
        logger_.error("Can not create event context in event server.");
        return;
      }
    }
    catch (Exception ex)
    {
      logger_
          .error("Can not create event context in event server. Exception: "
              + ex.toString());
      return;
    }

    // //load dummy list of events
    // int[] events = { 1001, 1002, 1003, 1004, 1005 };
    // try
    // {
    // eventServer.cosLoadEvents(eventCtx,events);
    // }
    // catch (Exception ex)
    // {
    // logger_.error("Can not load list of events in event server. Exception: "
    // + ex.toString());
    // return;
    // }

    // write event
    Scanner in = new Scanner(System.in);
    String str = "";
    int evtId = 0;
    do
    {
      System.out.print(prompt);
      str = in.nextLine();

      // user press enter
      if (str.trim().length() == 0)
      {
        continue;
      }

      // user want to quit
      if (str.compareToIgnoreCase("q") == 0)
      {
        break;
      }

      evtId = 0;

      // some form of complex command
      if (str.charAt(0) == '>')
      {
        // expectecd format: >load:xxxx;xxxx;xxxx
        // >write xxxx:xxxx;xxxx
        String message = str.substring(1);
        int pos = message.indexOf(':');
        if (pos < 0)
        {
          System.out.println(prompt
              + "expected format: >load:evt-id;evt-id;evt-id");
          System.out
              .println(prompt
                  + "expected format: >write evnt-id:param1;param2;param3");
          continue; // invalid command
        }
        String cmd = message.substring(0, pos).trim();
        String[] params = message.substring(pos + 1).trim().split(";");
        if (cmd.compareToIgnoreCase("load") == 0)
        {
          load_event(params);
        }
        else
        {
          String[] strArr = cmd.split(" ");
          if (strArr.length <= 1)
          {
            System.out
                .println(prompt
                    + "expected format: >write evnt-id:param1;param2;param3");
            continue;
          }
          cmd = strArr[0];
          if (cmd.compareToIgnoreCase("write") == 0)
          {
            try
            {
              evtId = Integer.parseInt(strArr[1]);
            }
            catch (NumberFormatException nfe)
            {
              System.out
                  .println(prompt
                      + "expected format: >write evnt-id:param1;param2;param3");
              continue;
            }
            write_event(evtId, params);
          }
          else if (cmd.compareToIgnoreCase("set-dp") == 0)
          {
            try
            {
              evtId = Integer.parseInt(strArr[1]);
              set_datapoint(evtId);
            }
            catch (NumberFormatException nfe)
            {
              set_datapoint(strArr[1]);
            }
          }
        }
        continue;
      }

      // standard command
      try
      {
        evtId = Integer.parseInt(str);
      }
      catch (NumberFormatException nfe)
      {
        evtId = 0;
      }

      if (evtId > 0)
      {
        try
        {
          eventServer.cosWriteEventId(eventCtx, evtId);
        }
        catch (Exception ex)
        {
          logger_
              .error("Can not write event to event server. Exception: "
                  + ex.toString());
        }
      }
      else
      {
        try
        {
          eventServer.cosWriteEvent(eventCtx, str);
        }
        catch (Exception ex)
        {
          logger_
              .error("Can not write event to event server. Exception: "
                  + ex.toString());
        }
      }
    } while (true);

    in.close();

    // delete event context
    try
    {
      eventServer.cosDeleteEventContext(eventCtx);
    }
    catch (Exception ex)
    {
      logger_
          .error("Can not delete event context in event server. Exception: "
              + ex.toString());
      return;
    }

  }

  private static void load_event(String[] events)
  {
    int[] eventIdList = new int[events.length];
    for (int i = 0; i < events.length; i++)
    {
      try
      {
        eventIdList[i] = Integer.parseInt(events[i]);
      }
      catch (NumberFormatException nfe)
      {
        // ignore
      }
    }

    // load the event
    try
    {
      eventServer.cosLoadEvents(eventCtx, eventIdList);
    }
    catch (Exception ex)
    {
      logger_
          .error("Can not load list of events in event server. Exception: "
              + ex.toString());
      return;
    }
  }

  private static void write_event(int eventId, String[] params)
  {
    try
    {
      eventServer.cosWriteEventIdParam(eventCtx, eventId, params);
    }
    catch (Exception ex)
    {
      logger_.error("Can not write event to event server. Exception: "
          + ex.toString());
    }
  }

  private static void set_datapoint(String datapoint)
  {
    try
    {
      eventServer.cosSetDatapointName2(eventCtx, datapoint);
    }
    catch (Exception ex)
    {
      logger_.error("Can not write event to event server. Exception: "
          + ex.toString());
    }
  }

  private static void set_datapoint(int keyid)
  {
    try
    {
      eventServer.cosSetDatapointName(eventCtx, keyid);
    }
    catch (Exception ex)
    {
      logger_.error("Can not write event to event server. Exception: "
          + ex.toString());
    }
  }
}
TOP

Related Classes of tcg.scada.event.EventClientTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.