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

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


package fr.esrf.TangoApi;

import fr.esrf.Tango.DevFailed;
import fr.esrf.TangoDs.Except;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


/**
 * Class Description:
 * This class manage database connection for Tango Class.
 *
 * @author verdier
 * @version $Revision: 26454 $
 */


public class DbClass implements java.io.Serializable {
    /**
     * Database object used for TANGO database access.
     */
    private Database database;

    /**
     * Device name used to access database if device not exported.
     */
    private String className;

    //===================================================================
    /**
     * DbClass constructor.
     * It will make a connection to the TANGO database.
     *
     * @param    className        Name of the class oject.
     */
    //===================================================================
    public DbClass(String className) throws DevFailed {
        //	Access the database and get device server info
        database = ApiUtil.get_db_obj();
        this.className = className;
    }

    //===================================================================
    /**
     * DbClass constructor.
     * It will make a connection to the TANGO database.
     *
     * @param    className        Name of the class oject.
     * @param    host    host where database is running.
     * @param    port    port for database connection.
     */
    //===================================================================
    public DbClass(String className, String host, String port) throws DevFailed {
        //	Access the database and get device server info
        database = ApiUtil.get_db_obj(host, port);
        this.className = className;
    }


    //==========================================================================
    /**
     * Query the database for a list of class
     * properties for the specified object.
     *
     * @param wildcard propertie's wildcard (* matches any charactere).
     * @return properties in DbDatum objects.
     */
    //==========================================================================
    public String[] get_property_list(String wildcard)
            throws DevFailed {
        return database.get_class_property_list(className, wildcard);
    }
    //==========================================================================
    /**
     * Query the database for a list of properties for this class.
     *
     * @param propertyNames list of property names.
     * @return properties in DbDatum objects.
     */
    //==========================================================================
    public DbDatum[] get_property(String[] propertyNames) throws DevFailed {
        return database.get_class_property(className, propertyNames);
    }
    //==========================================================================
    /**
     * Query the database for a property for this class.
     *
     * @param propertyName property name.
     * @return properties in DbDatum object.
     */
    //==========================================================================
    public DbDatum get_property(String propertyName) throws DevFailed {
        return database.get_class_property(className, propertyName);
    }
    //==========================================================================
    /**
     * Query the database for a list of properties for this class.
     * The property names are specified by the DbDatum array objects.
     *
     * @param properties list of property DbDatum objects.
     * @return properties in DbDatum objects.
     */
    //==========================================================================
    public DbDatum[] get_property(DbDatum[] properties) throws DevFailed {
        return database.get_class_property(className, properties);
    }

    //==========================================================================
    /**
     * Insert or update a list of properties for this class
     * The property names and their values are specified by the DbDatum array.
     *
     * @param properties Properties names and values array.
     */
    //==========================================================================
    public void put_property(DbDatum[] properties) throws DevFailed {
        database.put_class_property(className, properties);
    }
    //==========================================================================
    /**
     * Delete a list of properties for this class.
     *
     * @param propertyNames Property names.
     */
    //==========================================================================
    public void delete_property(String[] propertyNames) throws DevFailed {
        database.delete_class_property(className, propertyNames);
    }
    //==========================================================================
    /**
     * Delete a property for this class.
     *
     * @param propertyName Property name.
     */
    //==========================================================================
    public void delete_property(String propertyName) throws DevFailed {
        database.delete_class_property(className, propertyName);
    }
    //==========================================================================
    /**
     * Delete a list of properties for this class.
     *
     * @param properties Property DbDatum objects.
     */
    //==========================================================================
    public void delete_property(DbDatum[] properties) throws DevFailed {
        database.delete_class_property(className, properties);
    }


    //================================================================
    //	ATTRIBUTES
    //================================================================
    //==========================================================================
    /**
     * Query the database for a attributes defined for a class.
     * All attributes for a class attribute are returned.
     *
     * @param wildcard Wildcard char is '*' and matches wildvcard characters.
     * @return attributes list for specified class
     */
    //==========================================================================
    public String[] get_attribute_list(String wildcard) throws DevFailed {
        return database.get_class_attribute_list(className, wildcard);
    }
    //==========================================================================
    /**
     * Insert or update a list of attribute properties for this class.
     * The property names and their values are specified by the DbAttribute array.
     *
     * @param attr attribute names and properties names and values.
     */
    //==========================================================================
    public void put_attribute_property(DbAttribute[] attr) throws DevFailed {
        database.put_class_attribute_property(className, attr);
    }
    //==========================================================================
    /**
     * Insert or update a list of attribute properties for this class.
     * The property names and their values are specified by the DbAttribue.
     *
     * @param attr attribute name and properties names and values.
     */
    //==========================================================================
    public void put_attribute_property(DbAttribute attr) throws DevFailed {
        database.put_class_attribute_property(className, attr);
    }
    //==========================================================================
    /**
     * Delete a list of properties for this object.
     *
     * @param propertyNames Property names.
     */
    //==========================================================================
    public void delete_attribute_property(String attributeName, String[] propertyNames) throws DevFailed {
        database.delete_class_attribute_property(className, attributeName, propertyNames);
    }
    //==========================================================================
    /**
     * Delete a property for this object.
     *
     * @param propertyName Property name.
     */
    //==========================================================================
    public void delete_attribute_property(String attributeName, String propertyName) throws DevFailed {
        database.delete_class_attribute_property(className, attributeName, propertyName);
    }
    //==========================================================================
    /**
     * Query the database for a list of class attribute
     * properties for this device.
     *
     * @param attributeNames attribute names.
     * @return properties in DbDatum objects.
     */
    //==========================================================================
    public DbAttribute[] get_attribute_property(String[] attributeNames)  throws DevFailed {
        return database.get_class_attribute_property(className, attributeNames);
    }
    //==========================================================================
    /**
     * Query the database for of class attribute
     * property for this device.
     *
     * @param attributeName attribute name.
     * @return properties in DbDatum objects.
     */
    //==========================================================================
    public DbAttribute get_attribute_property(String attributeName)  throws DevFailed {
        return database.get_class_attribute_property(className, attributeName);
    }

    //===========================================================
    /**
     * return the class name.
     */
    //===========================================================
    public String name() {
        return className;
    }





    // ===================================================================
    /*
     * Pipe related methods
     */
    // ===================================================================

    // ===================================================================
    /**
     * Query the database for a list of class pipe properties
     * for the specified pipe.
     * @param pipeName specified pipe.
     * @return a list of class pipe properties.
     * @throws DevFailed in case of database access failed
     */
    // ===================================================================
    public DbPipe getPipeProperties(String pipeName) throws DevFailed {
        return database.getClassPipeProperties(className, pipeName);
    }
    // ===================================================================
    /**
     * Query the database for a class pipe property
     * for the specified pipe.
     * @param pipeName specified pipe.
     * @param propertyName specified property.
     * @return class pipe property.
     * @throws DevFailed in case of database access failed
     */
    // ===================================================================
    public DbDatum getPipeProperty(String pipeName, String propertyName) throws DevFailed {
        DbPipe dbPipe = database.getClassPipeProperties(className, pipeName);
        DbDatum datum = dbPipe.getDatum(propertyName);
        if (datum==null)
            throw new CommonDevFailed("TangoApi_PropertyNotFound",
                    "Property " + propertyName + " not found for pipe " + pipeName);
        return datum;
    }
    // ==========================================================================
    /**
     * Insert or update a list of pipe properties for the specified class.
     * The property names and their values are specified by the DbAPipe.
     *
     * @param dbPipe pipe name, and properties (names and values).
     * @throws DevFailed in case of database access failed
     */
    // ==========================================================================
    public void putPipeProperty(DbPipe dbPipe) throws DevFailed {
        database.putClassPipeProperty(className, dbPipe);
    }
    // ==========================================================================
    /**
     * Insert or update a list of pipe properties for the specified class.
     * The property names and their values are specified by the DbAPipe.
     *
     * @param dbPipes list of pipe name, and properties (names and values).
     * @throws DevFailed in case of database access failed
     */
    // ==========================================================================
    public void putPipeProperty(ArrayList dbPipes) throws DevFailed {
        for (DbPipe dbPipe : dbPipes)
            database.putClassPipeProperty(className, dbPipe);
    }
    // ===================================================================
    /**
     * Query database for a list of pipes for specified class.
     * @return a list of pipes defined in database for specified class.
     * @throws DevFailed in case of database access failed
     */
    // ===================================================================
    public List getPipeList() throws DevFailed {
        return getPipeList("*");
    }
    // ===================================================================
    /**
     * Query database for a list of pipes for specified class and specified wildcard.
     * @param wildcard specified wildcard.
     * @return a list of pipes defined in database for specified class and specified wildcard.
     * @throws DevFailed in case of database access failed
     */
    // ===================================================================
    public List getPipeList(String wildcard) throws DevFailed {
        return database.getClassPipeList(className, wildcard);
    }
    // ==========================================================================
    /**
     * Delete a pipe property for the specified class.
     *
     * @param pipeName pipe name
     * @param propertyName property name
     * @throws DevFailed in case of database access failed
     */
    // ==========================================================================
    public void deletePipeProperty(String pipeName, String propertyName) throws DevFailed {
        ArrayList list = new ArrayList(1);
        list.add(propertyName);
        deletePipeProperties(pipeName, list);
    }
    // ==========================================================================
    /**
     * Delete a pipe property for the specified class.
     *
     * @param pipeName pipe name
     * @param propertyNames property names
     * @throws DevFailed in case of database access failed
     */
    // ==========================================================================
    public void deletePipeProperties(String pipeName, String[] propertyNames) throws DevFailed {
        ArrayList   list = new ArrayList(propertyNames.length);
        Collections.addAll(list, propertyNames);
        deletePipeProperties(pipeName, list);
    }
    // ==========================================================================
    /**
     * Delete a pipe property for the specified class.
     *
     * @param pipeName pipe name
     * @param propertyNames property names
     * @throws DevFailed in case of database access failed
     */
    // ==========================================================================
    public void deletePipeProperties(String pipeName, List propertyNames) throws DevFailed {
        database.deleteClassPipeProperties(className, pipeName, propertyNames);
    }
    // ===================================================================
    /**
     * Delete specified pipe for specified class.
     * @param pipeName      pipe name
     * @throws DevFailed in case of database access failed
     */
    // ===================================================================
    public void deletePipe(String pipeName) throws DevFailed {
        database.deleteClassPipe(className, pipeName);
    }
    /**
     * Returns the property history for specified pipe.
     * @param pipeName      pipe name
     * @param propertyName  property Name
     * @return the property history for specified pipe.
     * @throws DevFailed  in case of database access failed
     */
    // ===================================================================
    public List getPipePropertyHistory(String pipeName,
                                                       String propertyName) throws DevFailed {
        return database.getClassPipePropertyHistory(className, pipeName, propertyName);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy