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

fr.esrf.TangoApi.DbDevImportInfo 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: 30274 $
//
//-======================================================================


package fr.esrf.TangoApi;


import fr.esrf.Tango.DevFailed;
import fr.esrf.Tango.DevVarLongStringArray;

/**
 * Class Description:
 * This class is an object containing the imported device information.
 *
 * @author verdier
 * @version $Revision: 30274 $
 */


public class DbDevImportInfo implements java.io.Serializable {
    /**
     * The device name.
     */
    public String name = null;
    /**
     * ior connection as String.
     */
    public String ior = null;
    /**
     * TANGO protocol version number.
     */
    public String version = null;
    /**
     * true if device is exported.
     */
    public boolean exported;
    /**
     * Server PID (if not a java program).
     */
    public int pid = 0;
    /**
     * Server name and intance name
     */
    public String server = "unknown";
    /**
     * Host name where server is running
     */
    public String hostname = "unknown";
    /**
     * Host name where server is running
     */
    public String classname = "unknown";
    /**
     * is a TACO device (rpc and not ior)
     */
    public boolean is_taco = false;

    public String taco_info;

    //===============================================

    /**
     * Default constructor.
     */
    //===============================================
    public DbDevImportInfo() {
    }
    //===============================================

    /**
     * Complete constructor.
     *
     * @param name      device name
     * @param exported  true if exported
     * @param version   IDL version
     * @param ior       IOR string
     * @param server    server name for specified device
     * @param hostname  Host name where server is (or have been) running
     * @param classname class name of specified device.
     */
    //===============================================
    public DbDevImportInfo(String name, boolean exported,
                           String version, String ior, String server, String hostname, String classname) {
        this.name = name;
        this.ior = ior;
        this.exported = exported;
        this.version = version;
        this.server = server;
        this.hostname = hostname;
        this.classname = classname;
    }
    //===============================================

    /**
     * Complete constructor.
     *
     * @param info info returned by Database server
     */
    //===============================================
    public DbDevImportInfo(DevVarLongStringArray info) {
        name = info.svalue[0];
        ior = info.svalue[1];
        version = info.svalue[2];
        exported = (info.lvalue[0] == 1);
        if (info.lvalue.length > 1) pid = info.lvalue[1];

        //	Server has been added later
        if (info.svalue.length > 3)
            server = info.svalue[3];
        //	Host has been added later
        if (info.svalue.length > 4)
            hostname = info.svalue[4];
        //	Class has been added later
        if (info.svalue.length > 5)
            classname = info.svalue[5];
        is_taco = (ior.startsWith("rpc:"));
    }
    //===============================================

    /**
     * Complete constructor.
     *
     * @param taco_info info from taco database
     */
    //===============================================
    public DbDevImportInfo(String[] taco_info) {
        is_taco = true;
        if (taco_info.length < 6) {
            //	Not full -> is an error
            this.taco_info = "";
            for (String info : taco_info)
                this.taco_info += info + "\n";
        } else {
            this.taco_info =
                    "Device:        " + taco_info[0] + "\n" +
                    "type_id:       " + "taco:" + taco_info[2] + "\n" +
                    "host:          " + taco_info[4] + "\n" +
                    "Class:         " + taco_info[1] + "\n" +
                    "Server:        " + taco_info[3] + "\n" +
                    "NETHOST:       " + taco_info[5];
        }
    }

    //===============================================
    //===============================================
    public String toString() {
        String result;
        if (is_taco) {
            result = taco_info;
        } else
            try {
                //	Return info in ior
                IORdump id = new IORdump(name, ior);
                result = id.toString();
                result += "\nServer:          " + server;
                if (classname != null && !classname.equals("unknown"))
                    result += "\nClass:           " + classname;
                if (pid != 0)
                    result += "\nServer PID:      " + pid;
                result += "\nExported:        " + exported;

            } catch (DevFailed e) {
                //	return full exception string
                StringBuilder sb = new StringBuilder(e.toString() + ":\n");
                for (int i = 0; i < e.errors.length; i++) {
                    sb.append(e.errors[i].reason).append(" from ");
                    sb.append(e.errors[i].origin).append("\n");
                    sb.append(e.errors[i].desc).append("\n");
                    if (i < e.errors.length - 1)
                        sb.append("-------------------------------------------------------------\n");
                }
                result = sb.toString();
            }
        return result;
    }

    //===============================================================
//===============================================================
    public static void main(String[] args) {
        //noinspection ProhibitedExceptionCaught
        try {
            String devname = args[0];
            Database db = ApiUtil.get_db_obj();
            DbDevImportInfo info = db.import_device(devname);
            System.out.println(info);
        } catch (DevFailed e) {
            if (args.length < 2 || !args[1].equals("-no_exception"))
                fr.esrf.TangoDs.Except.print_exception(e);
            System.exit(1);
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("Device name ?");
            System.exit(0);
        } catch (Exception ex) {
            ex.printStackTrace();
            System.exit(1);
        }
        System.exit(0);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy