All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fr.esrf.TangoApi.ApiUtil Maven / Gradle / Ivy

//+======================================================================
// $Source$
//
// Project:   Tango
//
// Description:  java source code for the TANGO client/server API.
//
// $Author: pascal_verdier $
//
// Copyright (C) :      2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,
//						European Synchrotron Radiation Facility
//                      BP 220, Grenoble 38043
//                      FRANCE
//
// This file is part of Tango.
//
// Tango is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// 
// Tango is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Lesser General Public License for more details.
// 
// You should have received a copy of the GNU Lesser General Public License
// along with Tango.  If not, see .
//
// $Revision: 30280 $
//
//-======================================================================


package fr.esrf.TangoApi;

import fr.esrf.TangoDs.Except;
import org.omg.CORBA.ORB;
import org.omg.CORBA.Request;

import fr.esrf.Tango.AttrQuality;
import fr.esrf.Tango.DevFailed;
import fr.esrf.Tango.DevState;
import fr.esrf.Tango.factory.TangoFactory;

import java.io.FileOutputStream;
import java.util.*;

/**
 * Class Description: This class manage a static vector of Database object. 
*
*
* Usage example:
*
    * Database dbase = ApiUtil.get_db_obj();
    *
* * * @author verdier * @version $Revision: 30280 $ */ public class ApiUtil { public static String revNumber = "9.1.3 - Mon Apr 25 13:04:57 CEST 2016"; private static IApiUtilDAO apiutilDAO = TangoFactory.getSingleton().getApiUtilDAO(); private static int hwmValue = 0; /** * ORB object reference for connection. */ static protected ORB orb = null; // =================================================================== // =================================================================== public IApiUtilDAO getApiUtilDAO() { return apiutilDAO; } // =================================================================== // =================================================================== public void setApiUtilDAO(final IApiUtilDAO databaseDAO) { } // =================================================================== /** * @return true if use the default factory (new ObjectDAODefaultImpl or * false if introspection factory (mainly used when from web) */ // =================================================================== public static boolean useDefaultFactory() { return TangoFactory.getSingleton().isDefaultFactory(); } // =================================================================== /** * Return the database object created for specified host and port. * * @param tango_host * host and port (hostname:portnumber) where database is running. */ // =================================================================== public static Database get_db_obj(final String tango_host) throws DevFailed { return apiutilDAO.get_db_obj(tango_host); } // =================================================================== /** * Return the database object created with TANGO_HOST environment variable . */ // =================================================================== public static Database get_default_db_obj() throws DevFailed { return apiutilDAO.get_default_db_obj(); } // =================================================================== /** * Return tru if the database object has been created. */ // =================================================================== public static boolean default_db_obj_exists() throws DevFailed { return apiutilDAO.default_db_obj_exists(); } // =================================================================== /** * Return the database object created with TANGO_HOST environment variable . */ // =================================================================== public static synchronized Database get_db_obj() throws DevFailed { return apiutilDAO.get_db_obj(); } // =================================================================== /** * Return the database object created for specified host and port. * * @param host host where database is running. * @param port port for database connection. */ // =================================================================== public static Database get_db_obj(final String host, final String port) throws DevFailed { return apiutilDAO.get_db_obj(host, port); } // =================================================================== /** * Return the database object created for specified host and port, and set * this database object for all following uses.. * * @param host host where database is running. * @param port port for database connection. */ // =================================================================== public static Database change_db_obj(final String host, final String port) throws DevFailed { return apiutilDAO.change_db_obj(host, port); } // =================================================================== /** * Return the database object created for specified host and port, and set * this database object for all following uses.. * * @param host host where database is running. * @param port port for database connection. */ // =================================================================== public static Database set_db_obj(final String host, final String port) throws DevFailed { return apiutilDAO.set_db_obj(host, port); } // =================================================================== /** * Return the database object created for specified host and port. * * @param tango_host * host and port (hostname:portnumber) where database is running. */ // =================================================================== public static Database set_db_obj(final String tango_host) throws DevFailed { return apiutilDAO.set_db_obj(tango_host); } // =================================================================== // =================================================================== // =================================================================== /** * Return the orb object */ // =================================================================== public static ORB get_orb() throws DevFailed { return apiutilDAO.get_orb(); } // =================================================================== /** * Return the host address. */ // =================================================================== public static String getHostAddress() throws DevFailed { return HostInfo.getAddress(); } // =================================================================== /** * Return the host addresses. */ // =================================================================== public static Vector getHostAddresses() throws DevFailed { return HostInfo.getAddresses(); } // =================================================================== /** * Return the host name. */ // =================================================================== public static String getHostName() throws DevFailed { return HostInfo.getName(); } // =================================================================== /** * Return the orb object */ // =================================================================== public static void set_in_server(final boolean val) { apiutilDAO.set_in_server(val); } // =================================================================== /** * Return true if in server code or false if in client code. */ // =================================================================== public static boolean in_server() { return apiutilDAO.in_server(); } public static int getReconnectionDelay() { return apiutilDAO.getReconnectionDelay(); } // ========================================================================== /* * Asynchronous request management */ // ========================================================================== // ========================================================================== /** * Add request in hash table and return id */ // ========================================================================== public static int put_async_request(final AsyncCallObject aco) { return apiutilDAO.put_async_request(aco); } // ========================================================================== /** * Return the request in hash table for the id * * @throws DevFailed */ // ========================================================================== public static Request get_async_request(final int id) throws DevFailed { return apiutilDAO.get_async_request(id); } // ========================================================================== /** * Return the Asynch Object in hash table for the id */ // ========================================================================== public static AsyncCallObject get_async_object(final int id) { return apiutilDAO.get_async_object(id); } // ========================================================================== /** * Remove asynchronous call request and id from hashtable. */ // ========================================================================== public static void remove_async_request(final int id) { apiutilDAO.remove_async_request(id); } // ========================================================================== /** * Set the reply_model in AsyncCallObject for the id key. */ // ========================================================================== public static void set_async_reply_model(final int id, final int reply_model) { apiutilDAO.set_async_reply_model(id, reply_model); } // ========================================================================== /** * Set the Callback object in AsyncCallObject for the id key. */ // ========================================================================== public static void set_async_reply_cb(final int id, final CallBack cb) { apiutilDAO.set_async_reply_cb(id, cb); } // ========================================================================== /** * return the still pending asynchronous call for a reply model. * * @param dev DeviceProxy object. * @param reply_model ApiDefs.ALL_ASYNCH, POLLING or CALLBACK. */ // ========================================================================== public static int pending_asynch_call(final DeviceProxy dev, final int reply_model) { return apiutilDAO.pending_asynch_call(dev, reply_model); } // ========================================================================== /** * return the still pending asynchronous call for a reply model. * * @param reply_model ApiDefs.ALL_ASYNCH, POLLING or CALLBACK. */ // ========================================================================== public static int pending_asynch_call(final int reply_model) { return apiutilDAO.pending_asynch_call(reply_model); } // ========================================================================== /** * Return the callback sub model used. * * @param model ApiDefs.PUSH_CALLBACK or ApiDefs.PULL_CALLBACK. */ // ========================================================================== public static void set_asynch_cb_sub_model(final int model) { apiutilDAO.set_asynch_cb_sub_model(model); } // ========================================================================== /** * Set the callback sub model used (ApiDefs.PUSH_CALLBACK or * ApiDefs.PULL_CALLBACK). */ // ========================================================================== public static int get_asynch_cb_sub_model() { return apiutilDAO.get_asynch_cb_sub_model(); } // ========================================================================== /** * Fire callback methods for all (any device) asynchronous requests(cmd and * attr) with already arrived replies. */ // ========================================================================== public static void get_asynch_replies() { apiutilDAO.get_asynch_replies(); } // ========================================================================== /** * Fire callback methods for all (any device) asynchronous requests(cmd and * attr) with already arrived replies. */ // ========================================================================== public static void get_asynch_replies(final int timeout) { apiutilDAO.get_asynch_replies(timeout); } // ========================================================================== /** * Fire callback methods for all (any device) asynchronous requests(cmd and * attr) with already arrived replies. */ // ========================================================================== public static void get_asynch_replies(final DeviceProxy dev) { apiutilDAO.get_asynch_replies(dev); } // ========================================================================== /** * Fire callback methods for all (any device) asynchronous requests(cmd and * attr) with already arrived replies. */ // ========================================================================== public static void get_asynch_replies(final DeviceProxy dev, final int timeout) { apiutilDAO.get_asynch_replies(dev, timeout); } // ========================================================================== /* * Methods to convert data. */ // ========================================================================== // ========================================================================== /** * Convert arguments to one String array */ // ========================================================================== public static String[] toStringArray(final String objname, final String[] argin) { final String[] array = new String[1 + argin.length]; array[0] = objname; System.arraycopy(argin, 0, array, 1, argin.length); return array; } // ========================================================================== /** * Convert arguments to one String array */ // ========================================================================== public static String[] toStringArray(final String objname, final String argin) { final String[] array = new String[2]; array[0] = objname; array[1] = argin; return array; } // ========================================================================== /** * Convert arguments to one String array */ // ========================================================================== public static String[] toStringArray(final String argin) { final String[] array = new String[1]; array[0] = argin; return array; } // ========================================================================== /** * Convert a DbAttribute class array to a StringArray. * * @param objname object name (used in first index of output array).. * @param attributes DbAttribute array to be converted * @return the String array created from input argument. */ // ========================================================================== public static String[] toStringArray(final String objname, final DbAttribute[] attributes, final int mode) { final int nb_attr = attributes.length; // Copy object name and nb attrib to String array final ArrayList list = new ArrayList(); list.add(objname); list.add(Integer.toString(nb_attr)); for (DbAttribute attribute : attributes) { // Copy Attrib name and nb prop to String array list.add(attribute.name); list.add("" + attribute.size()); for (int j=0 ; j list = new ArrayList(); list.add(deviceNme); list.add(Integer.toString(1)); // one pipe list.add(dbPipe.getName()); list.add(Integer.toString(dbPipe.size())); // property number // fOR EACH PROPERTY for (DbDatum datum : dbPipe) { if (!datum.is_empty()) { String[] values = datum.extractStringArray(); list.add(datum.name); list.add(Integer.toString(values.length)); // Property value number (array case) Collections.addAll(list, values); } } String[] array = new String[list.size()]; for (int i=0 ; i 2) { Except.throw_non_supported_exception("API_NotSupportedMode", "Mode " + mode + " to decode attribute properties is not supported", "ApiUtil.toDbAttributeArray()"); } int idx = 1; final int nb_attr = Integer.parseInt(array[idx++]); final DbAttribute[] attr = new DbAttribute[nb_attr]; for (int i = 0; i < nb_attr; i++) { // Create DbAttribute with name and nb properties // ------------------------------------------------------ attr[i] = new DbAttribute(array[idx++]); // Get nb properties // ------------------------------------------------------ final int nb_prop = Integer.parseInt(array[idx++]); for (int j = 0; j < nb_prop; j++) { // And copy property name and value in // DbAttribute's DbDatum array // ------------------------------------------ final String p_name = array[idx++]; switch (mode) { case 1: // Value is just one element attr[i].add(p_name, array[idx++]); break; case 2: // value is an array final int p_length = Integer.parseInt(array[idx++]); final String[] val = new String[p_length]; for (int p = 0; p < p_length; p++) { val[p] = array[idx++]; } attr[i].add(p_name, val); break; } } } return attr; } // ========================================================================== /** * Convert a StringArray to a DbPipe * * @param pipeName pip name * @param array String array to be converted * @return the DbPipe created from input argument. * @throws DevFailed if array is not coherent. */ // ========================================================================== public static DbPipe toDbPipe(String pipeName, final String[] array) throws DevFailed { DbPipe dbPipe = new DbPipe(pipeName); try { int index = 3; final int nbProperties = Integer.parseInt(array[index++]); for (int i=0 ; i




© 2015 - 2025 Weber Informatics LLC | Privacy Policy