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

admin.astor.tango_release.TangoServerRelease Maven / Gradle / Ivy

//+======================================================================
// $Source:  $
//
// Project:   Tango
//
// Description:  java source code for the ClassRelease class definition .
//
// $Author: verdier $
//
// $Revision: $
//
// $Log: ClassRelease.java,v $
//
//-======================================================================

package admin.astor.tango_release;

import fr.esrf.Tango.DevFailed;
import fr.esrf.TangoApi.DbServer;
import fr.esrf.TangoApi.DeviceProxy;

import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

/**
 *	This class Manage a list Tango class objects with their
 *	Tango and IDL release number.
 *
 * @author  verdier
 */
public class  TangoServerRelease extends ArrayList {

    String      name;
    String      exeName;
    String      instanceName;
    double      releaseNumber=0.0;
    String      error = "";

    private static final String dserverClassName = "DServer";
    //===============================================================
    //===============================================================
    public TangoServerRelease(String serverName) {
        this.name = serverName;
        StringTokenizer stk = new StringTokenizer(serverName, "/");
        exeName = stk.nextToken();
        instanceName = stk.nextToken();
        try {
            //  Get Tango release number
            DbServer dbServer = new DbServer(serverName);
            int release = new DeviceProxy("dserver/"+serverName).getTangoVersion();
            //  Get class list
            String[] classNames = getClasses(dbServer);
            if (release>=100)
                releaseNumber = 0.01 * release;
            //System.out.println(name + ":    " + releaseNumber);
            if (classNames.length>0) {
                //add(new TangoClassRelease(dbServer, dserverClassName));
                for (String className : classNames) {
                    //  Add it to class list with its IDL
                    add(new TangoClassRelease(dbServer, className));
                }
            }
            else
                error = "No class found on server " + name;
        }
        catch (DevFailed e) {
            error = e.errors[0].desc;
        }
        catch (NoSuchMethodError e) {
            error = "TangORB is too old to check Tango release.";
        }
    }
    //===============================================================
    //===============================================================
    public String[] getClasses(DbServer dbServer) throws DevFailed {
        return dbServer.get_class_list();
    }
	//===============================================================
	//===============================================================
    public boolean hasIDL(int idl) {
        for (TangoClassRelease classRelease : this) {
            if (classRelease.idl==idl &&
               !classRelease.className.equals(dserverClassName))
                return true;
        }
        //  Nothing found
        return false;
    }
	//===============================================================
	//===============================================================
    public List getIdlClasses(int idl) {
        List list = new ArrayList<>();
        for (TangoClassRelease classRelease : this) {
            if (classRelease.idl==idl &&
               !classRelease.className.equals(dserverClassName))
                list.add(classRelease);
        }
        return list;
    }
	//===============================================================
	//===============================================================
    public String toStringFull() {
        StringBuilder   sb = new StringBuilder(this.toString());
        sb.append("\n");
        for (TangoClassRelease classRelease : this) {
            sb.append(classRelease).append("\n");
        }
        return sb.toString();
    }
	//===============================================================
	//===============================================================
    public String toString() {
        StringBuilder   sb = new StringBuilder(name + " (");
        if (releaseNumber>=1.0) {
            sb.append("Tango-").append(String.format("%4.2f", releaseNumber));
        }
        else
            sb.append(error);
        sb.append(")");

        return sb.toString();
    }
	//===============================================================
	//===============================================================
	public static void main (String[] args) {

		String		serverName = "VacGaugeServer/sr_c1-pen";

		if (args.length>0)
			serverName = args[0];
		try {
			TangoServerRelease	client =
                    new TangoServerRelease(serverName);
            System.out.println(client);
		}
		catch(Exception e) {
			e.printStackTrace();
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy