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

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


package fr.esrf.TangoApi;

import fr.esrf.Tango.DevFailed;
import fr.esrf.TangoApi.events.DbEventImportInfo;

import java.util.List;

public interface IDatabaseDAO extends IConnectionDAO{

	
	//===================================================================
	/**
	 *	Database access init method.
	 *
	 *	@throws DevFailed in case of environment not corectly set.
	 */
	//===================================================================
	public abstract void init(Database database) throws DevFailed;	
	
	//===================================================================
	/**
	 *	Database access constructor.
	 *
	 *	@param	host	host where database is running.
	 *	@param	port	port for database connection.
	 *	@throws DevFailed in case of host or port not available
	 */
	//===================================================================
	public abstract void init(Database database, String host, String port) throws DevFailed;	
	
	//==========================================================================
	//==========================================================================
	public abstract String toString(Database database);

	//==========================================================================
	/**
	 *	Query the database for general info about the table in the database.
	 *	@return	the result of the query as String.
	 */
	//==========================================================================
	public abstract String get_info(Database database) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of host registred.
	 *	@return	the list of all hosts registred in TANGO database.
	 */
	//==========================================================================
	public abstract String[] get_host_list(Database database) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of host registred.
	 *	@param wildcard	Wildcard char is '*' and matches wildvcard characters.
	 *	@return	the list of the hosts registred in TANGO database 
	 *			with the specified wildcard.
	 */
	//==========================================================================
	public abstract String[] get_host_list(Database database, String wildcard) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of classes instancied for a server.
	 *
	 *	@param	servname server name and instance name (ie.: Serial/i1).
	 *	@return	the list of all classes registred in TANGO database for 
	 *			servname except the DServer class
	 *			(existing on all Tango device server).
	 */
	//==========================================================================
	public abstract String[] get_server_class_list(Database database, String servname)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of server names registred in the database.
	 *	@return	the list of all server names registred in TANGO database.
	 */
	//==========================================================================
	public abstract String[] get_server_name_list(Database database) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of instance names
	 *		registred for specified server name.
	 *
	 *	@param	servname	server name.
	 *	@return	the list of all instance names for specified server name.
	 */
	//==========================================================================
	public abstract String[] get_instance_name_list(Database database, String servname)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of servers registred in the database.
	 *	@return	the list of all servers registred in TANGO database.
	 */
	//==========================================================================
	public abstract String[] get_server_list(Database database) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of servers registred in the database.
	 *	@param wildcard	Wildcard char is '*' and matches wildvcard characters.
	 *	@return	the list of all servers registred in TANGO database.
	 */
	//==========================================================================
	public abstract String[] get_server_list(Database database, String wildcard) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of servers registred on the specified host.
	 *	@param hostname	the specified host name.
	 *	@return	the list of the servers registred in TANGO database 
	 *			for the specified host.
	 */
	//==========================================================================
	public abstract String[] get_host_server_list(Database database, String hostname)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for server information.
	 *	@param servname	The specified server name.
	 *	@return	The information found for the specified server
	 *				in a DBServInfo object.
	 */
	//==========================================================================
	public abstract DbServInfo get_server_info(Database database, String servname)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Add/update server information in databse.
	 *	@param info	Server information for the specified server
	 *					in a DbServinfo object.
	 */
	//==========================================================================
	public abstract void put_server_info(Database database, DbServInfo info) throws DevFailed;

	//==========================================================================
	/**
	 *	Delete server information in databse.
	 *	@param servname	Server name.
	 */
	//==========================================================================
	public abstract void delete_server_info(Database database, String servname) throws DevFailed;
    // ==========================================================================
    /**
     * Rename server name/instance in databse.
     *
     * @param srcServerName existing server name.
     * @param newServerName new server name.
     * @throws DevFailed in case of database access failed
     */
    // ==========================================================================
    public void rename_server(Database database, String srcServerName, String newServerName) throws DevFailed;





	//==========================================================================
	/**
	 *	Add/update a device to the database
	 *	@param devinfo The device name, class and server  specified in object.
	 */
	//==========================================================================
	public abstract void add_device(Database database, DbDevInfo devinfo) throws DevFailed;

	//==========================================================================
	/**
	 *	Add/update a device to the database
	 *	@param devname		The device name
	 *	@param classname	The class.
	 *	@param servname		The server name.
	 */
	//==========================================================================
	public abstract void add_device(Database database, String devname, String classname,
			String servname) throws DevFailed;

	//==========================================================================
	/**
	 *	Delete the device of the specified name from the database
	 *	@param devname The device name.
	 */
	//==========================================================================
	public abstract void delete_device(Database database, String devname) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for the export and more info of the specified device.
	 *	@param devname The device name.
	 *	@return the information in a DbGetDeviceInfo.
	 */
	//==========================================================================
	public abstract DeviceInfo get_device_info(Database database, String devname) throws DevFailed;

	// ==========================================================================
	/**
	 * Query database for list of  devices.
	 * 
	 * @param wildcard  Wildcard char is '*' and matches wildvcard characters.
	 * @return The list of devices
	 */
	// ==========================================================================
	public abstract String[] get_device_list(Database database, String wildcard) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for the export info of the specified device.
	 *	@param devname The device name.
	 *	@return the information in a DbDevImportInfo.
	 */
	//==========================================================================
	public abstract DbDevImportInfo import_device(Database database, String devname)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Mark the specified server as unexported in the database.
	 *	@param devname The device name.
	 */
	//==========================================================================
	public abstract void unexport_device(Database database, String devname) throws DevFailed;

	//==========================================================================
	/**
	 *	Update the export info fort this device in the database.
	 *	@param devinfo	Device information to export.
	 */
	//==========================================================================
	public abstract void export_device(Database database, DbDevExportInfo devinfo)
			throws DevFailed;

	//**************************************
	//       Devices list MANAGEMENT
	//**************************************	
	//==========================================================================
	/**
	 *	Query the database for server devices and classes.
	 *	@param servname	The specified server name.
	 *	@return	The devices and classes (e.g. "id11/motor/1", "StepperMotor",
	 *			"id11/motor/2", "StepperMotor",....)
	 */
	//==========================================================================
	public abstract String[] get_device_class_list(Database database, String servname)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of devices served by the specified server
	 *	and of the specified class.
	 *	@param servname		The server name.
	 *	@param classname	The class name
	 *	@return the device names are stored in an array of strings.
	 */
	//==========================================================================
	public abstract String[] get_device_name(Database database, String servname, String classname)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of device domain names witch match
	 *	the wildcard provided.
	 *	@param wildcard	Wildcard char is '*' and matches wildvcard characters.
	 *	@return the device domain are stored in an array of strings.
	 */
	//==========================================================================
	public abstract String[] get_device_domain(Database database, String wildcard)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of device family names witch match
	 *	the wildcard provided.
	 *	@param wildcard	Wildcard char is '*' and matches wildvcard characters.
	 *	@return the device family are stored in an array of strings.
	 */
	//==========================================================================
	public abstract String[] get_device_family(Database database, String wildcard)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of device member names witch match
	 *	the wildcard provided.
	 *	@param wildcard	Wildcard char is '*' and matches wildvcard characters.
	 *	@return the device member are stored in an array of strings.
	 */
	//==========================================================================
	public abstract String[] get_device_member(Database database, String wildcard)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Add a group of devices to the database.
	 *	@param servname	Server name for these devices.
	 *	@param devinfo	Devices and server information.
	 */
	//==========================================================================
	public abstract void add_server(Database database, String servname, DbDevInfo[] devinfo)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Delete the device server and its associated devices from the database.
	 *	@param devname the device name.
	 */
	//==========================================================================
	public abstract void delete_server(Database database, String devname) throws DevFailed;

	//==========================================================================
	/**
	 *	Add a group of devices to the database.
	 *	@param devinfo	Devices and server information.
	 */
	//==========================================================================
	public abstract void export_server(Database database, DbDevExportInfo[] devinfo)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Mark all devices exported for this device server as unexported.
	 *	@param devname the device name.
	 */
	//==========================================================================
	public abstract void unexport_server(Database database, String devname) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of object (ie non-device)
	 *	for which properties are defiend.
	 *	@param wildcard	wildcard (* matches any charactere).
	 *	@return objects for which properties are defiened list.
	 */
	//==========================================================================
	public abstract String[] get_object_list(Database database, String wildcard) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of object (ie non-device)
	 *	for which properties are defiend.
	 *	@param objname	object name.
	 *	@param wildcard wildcard (* matches any charactere).
	 *	@return Property names..
	 */
	//==========================================================================
	public abstract String[] get_object_property_list(Database database, String objname,
			String wildcard) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of object (ie non-device)
	 *	properties for the pecified object.
	 *	@param name Object name.
	 *	@param propnames list of property names.
	 *	@return properties in DbDatum objects.
	 */
	//==========================================================================
	public abstract DbDatum[] get_property(Database database, String name, String[] propnames)
			throws DevFailed;

	
	// ==========================================================================
	/**
	 * Query the database for an object (ie non-device) property for the
	 * pecified object without access check (initilizing phase).
	 * 
	 * @param name
	 *            Object name.
	 * @param propname
	 *            list of property names.
	 * @return property in DbDatum object.
	 */
	// ==========================================================================	
	public DbDatum get_property(Database database, String name, String propname, boolean forced) throws DevFailed;
	
	//==========================================================================
	/**
	 *	Query the database for an object (ie non-device)
	 *	property for the pecified object.
	 *	@param name Object name.
	 *	@param propname list of property names.
	 *	@return property in DbDatum object.
	 */
	//==========================================================================
	public abstract DbDatum get_property(Database database, String name, String propname)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of object (ie non-device)
	 *	properties for thr dpecified object.
	 *	The property names are specified by the DbDatum array objects.
	 *	@param name Object name.
	 *	@param properties list of property DbDatum objects.
	 *	@return properties in DbDatum objects.
	 */
	//==========================================================================
	public abstract DbDatum[] get_property(Database database, String name, DbDatum[] properties)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Insert or update a list of properties for the specified object
	 *	The property names and their values are specified by the DbDatum array.
	 *	
	 *	@param name Object name.
	 *	@param properties Properties names and values array.
	 */
	//==========================================================================
	public abstract void put_property(Database database, String name, DbDatum[] properties)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Delete a list of properties for the specified object.
	 *	@param name Object name.
	 *	@param propnames Property names.
	 */
	//==========================================================================
	public abstract void delete_property(Database database, String name, String[] propnames)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Delete a  property for the specified object.
	 *	@param name Object name.
	 *	@param propname Property names.
	 */
	//==========================================================================
	public abstract void delete_property(Database database, String name, String propname)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Delete a list of properties for the specified object.
	 *	@param name Object name.
	 *	@param properties Property DbDatum objects.
	 */
	//==========================================================================
	public abstract void delete_property(Database database, String name, DbDatum[] properties)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of class
	 *	properties for the pecified object.
	 *	@param classname	device name.
	 *	@param wildcard	propertie's wildcard (* matches any charactere).
	 *	@return properties in DbDatum objects.
	 */
	//==========================================================================
	public abstract String[] get_class_property_list(Database database, String classname,
			String wildcard) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of device
	 *	properties for the pecified object.
	 *	@param devname	device name.
	 *	@param wildcard	propertie's wildcard (* matches any charactere).
	 *	@return properties in DbDatum objects.
	 */
	//==========================================================================
	public abstract String[] get_device_property_list(Database database, String devname,
			String wildcard) throws DevFailed;

	//==========================================================================
	//==========================================================================
	public abstract String get_class_for_device(Database database, String devname)
			throws DevFailed;

	//==========================================================================
	//==========================================================================
	public abstract String[] get_class_inheritance_for_device(Database database, String devname)
			throws DevFailed;

	//**************************************
	//       DEVICE PROPERTIES MANAGEMENT
	//**************************************	
	//==========================================================================
	/**
	 *	Query the database for a list of device
	 *	properties for the pecified object.
	 *	@param name device name.
	 *	@param propnames list of property names.
	 *	@return properties in DbDatum objects.
	 */
	//==========================================================================
	public abstract DbDatum[] get_device_property(Database database, String name,
			String[] propnames) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a  device
	 *	property for the pecified object.
	 *	@param name device name.
	 *	@param propname property name.
	 *	@return property in DbDatum object.
	 */
	//==========================================================================
	public abstract DbDatum get_device_property(Database database, String name, String propname)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of device
	 *	properties for the pecified object.
	 *	The property names are specified by the DbDatum array objects.
	 *	@param name device name.
	 *	@param properties list of property DbDatum objects.
	 *	@return properties in DbDatum objects.
	 */
	//==========================================================================
	public abstract DbDatum[] get_device_property(Database database, String name,
			DbDatum[] properties) throws DevFailed;

	//==========================================================================
	/**
	 *	Insert or update a list of properties for the specified device
	 *	The property names and their values are specified by the DbDatum array.
	 *	
	 *	@param name device name.
	 *	@param properties Properties names and values array.
	 */
	//==========================================================================
	public abstract void put_device_property(Database database, String name, DbDatum[] properties)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Delete a list of properties for the specified object.
	 *	@param name Device name.
	 *	@param propnames Property names.
	 */
	//==========================================================================
	public abstract void delete_device_property(Database database, String name, String[] propnames)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Delete a property for the specified object.
	 *	@param name Device name.
	 *	@param propname Property name.
	 */
	//==========================================================================
	public abstract void delete_device_property(Database database, String name, String propname)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Delete a list of properties for the specified object.
	 *	@param name Device name.
	 *	@param properties Property DbDatum objects.
	 */
	//==========================================================================
	public abstract void delete_device_property(Database database, String name,
			DbDatum[] properties) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of device attributes
	 *	@param devname device name.
	 *	@return attribute names.
	 */
	//==========================================================================
	public abstract String[] get_device_attribute_list(Database database, String devname)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of device attributes
	 *	properties for the pecified object.
	 *	@param devname device name.
	 *	@param attnames attribute names.
	 *	@return properties in DbAttribute objects array.
	 */
	//==========================================================================
	public abstract DbAttribute[] get_device_attribute_property(Database database, String devname,
			String[] attnames) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for device attribute
	 *	property for the pecified object.
	 *	@param devname device name.
	 *	@param attname attribute name.
	 *	@return property in DbAttribute object.
	 */
	//==========================================================================
	public abstract DbAttribute get_device_attribute_property(Database database, String devname,
			String attname) throws DevFailed;

	//==========================================================================
	/**
	 *	Insert or update a list of attribute properties for the specified device.
	 *	The property names and their values are specified by the DbAttribute array.
	 *	
	 *	@param devname	device name.
	 *	@param attr		attribute names, and properties (names and values).
	 */
	//==========================================================================
	public abstract void put_device_attribute_property(Database database, String devname,
			DbAttribute[] attr) throws DevFailed;

	//==========================================================================
	/**
	 *	Insert or update a list of attribute properties for the specified device.
	 *	The property names and their values are specified by the DbAttribute.
	 *	
	 *	@param devname	device name.
	 *	@param attr	attribute name, and properties (names and values).
	 */
	//==========================================================================
	public abstract void put_device_attribute_property(Database database, String devname,
			DbAttribute attr) throws DevFailed;

	//==========================================================================
	/**
	 *	Delete an list of attributes properties for the specified object.
	 *	@param devname Device name.
	 *	@param attr	attribute name, and properties (names).
	 */
	//==========================================================================
	public abstract void delete_device_attribute_property(Database database, String devname,
			DbAttribute attr) throws DevFailed;

	//==========================================================================
	/**
	 *	Delete a list of attributes properties for the specified object.
	 *	@param devname Device name.
	 *	@param attr	attribute names, and properties (names) in array.
	 */
	//==========================================================================
	public abstract void delete_device_attribute_property(Database database, String devname,
			DbAttribute[] attr) throws DevFailed;

	//==========================================================================
	/**
	 *	Delete a list of properties for the specified object.
	 *	@param devname	Device name.
	 *	@param attname	Attribute name.
	 *	@param propnames Property names.
	 */
	//==========================================================================
	public abstract void delete_device_attribute_property(Database database, String devname,
			String attname, String[] propnames) throws DevFailed;

	//==========================================================================
	/**
	 *	Delete a property for the specified object.
	 *	@param devname	Device name.
	 *	@param attname	Attribute name.
	 *	@param propname	Property name.
	 */
	//==========================================================================
	public abstract void delete_device_attribute_property(Database database, String devname,
			String attname, String propname) throws DevFailed;

	//==========================================================================
	/**
	 *	Delete an attribute for the specified object.
	 *	@param devname	Device name.
	 *	@param attname	Attribute name.
	 */
	//==========================================================================
	public abstract void delete_device_attribute(Database database, String devname, String attname)
			throws DevFailed;

	//**************************************
	//      CLASS PROPERTIES MANAGEMENT
	//**************************************	
	//==========================================================================
	/**
	 *	Query the database for a list of classes registred in the database.
	 *	@param servname	server name
	 *	@return	the list of all servers registred in TANGO database.
	 */
	//==========================================================================
	public abstract String[] get_class_list(Database database, String servname) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of class
	 *	properties for the pecified object.
	 *	@param name Class name.
	 *	@param propnames list of property names.
	 *	@return properties in DbDatum objects.
	 */
	//==========================================================================
	public abstract DbDatum[] get_class_property(Database database, String name, String[] propnames)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a class
	 *	property for the pecified object.
	 *	@param name Class name.
	 *	@param propname list of property names.
	 *	@return property in DbDatum object.
	 */
	//==========================================================================
	public abstract DbDatum get_class_property(Database database, String name, String propname)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of class
	 *	properties for the pecified object.
	 *	The property names are specified by the DbDatum array objects.
	 *	@param name Class name.
	 *	@param properties list of property DbDatum objects.
	 *	@return properties in DbDatum objects.
	 */
	//==========================================================================
	public abstract DbDatum[] get_class_property(Database database, String name,
			DbDatum[] properties) throws DevFailed;

	//==========================================================================
	/**
	 *	Insert or update a list of properties for the specified class.
	 *	The property names and their values are specified by the DbDatum array.
	 *	
	 *	@param name Class name.
	 *	@param properties Properties names and values array.
	 */
	//==========================================================================
	public abstract void put_class_property(Database database, String name, DbDatum[] properties)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Delete a list of properties for the specified object.
	 *	@param name Class name.
	 *	@param propnames Property names.
	 */
	//==========================================================================
	public abstract void delete_class_property(Database database, String name, String[] propnames)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Delete a property for the specified object.
	 *	@param name Class name.
	 *	@param propname Property name.
	 */
	//==========================================================================
	public abstract void delete_class_property(Database database, String name, String propname)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Delete a list of properties for the specified object.
	 *	@param name Class name.
	 *	@param properties Property DbDatum objects.
	 */
	//==========================================================================
	public abstract void delete_class_property(Database database, String name, DbDatum[] properties)
			throws DevFailed;

	//**************************************
	//      CLASS Attribute PROPERTIES MANAGEMENT
	//**************************************	
	//==========================================================================
	/**
	 *	Query the database for a attributes defined for a class.
	 *	All attributes for a class attribute are returned.
	 *
	 *	@param classname	class name.
	 *	@param wildcard	Wildcard char is '*' and matches wildvcard characters.
	 *	@return attributes list for specified class
	 */
	//==========================================================================
	public abstract String[] get_class_attribute_list(Database database, String classname,
			String wildcard) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a attribute properties for trhe specified class.
	 *
	 *	@param classname	class name.
	 *	@param attname		attribute name
	 *	@return attribute properties for specified class and attribute.
	 */
	//==========================================================================
	public abstract DbAttribute get_class_attribute_property(Database database, String classname,
			String attname) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of class attributes
	 *	properties for the pecified object.
	 *	@param classname Class name.
	 *	@param attnames list of attribute names.
	 *	@return attribute properties for specified class and attributes.
	 */
	//==========================================================================
	public abstract DbAttribute[] get_class_attribute_property(
			Database database, String classname, String[] attnames) throws DevFailed;

	//==========================================================================
	/**
	 *	Insert or update a list of properties for the specified class attribute.
	 *	The attribute name, the property names and their values
	 *	are specified by the DbAttribute.
	 *	
	 *	@param classname Class name.
	 *	@param attr		DbAttribute objects containing attribute names,
	 *					property names and property values.
	 */
	//==========================================================================
	public abstract void put_class_attribute_property(Database database, String classname,
			DbAttribute[] attr) throws DevFailed;

	//==========================================================================
	/**
	 *	Insert or update a list of properties for the specified class attribute.
	 *	The attribute name, the property names and their values
	 *	are specified by the DbAttribute.
	 *	
	 *	@param classname Class name.
	 *	@param attr		DbAttribute object containing attribute name,
	 *					property names and property values.
	 */
	//==========================================================================
	public abstract void put_class_attribute_property(Database database, String classname,
			DbAttribute attr) throws DevFailed;

	//==========================================================================
	/**
	 *	Delete a property for the specified object.
	 *	@param name Class name.
	 *	@param propname Property names.
	 */
	//==========================================================================
	public abstract void delete_class_attribute_property(Database database, String name,
			String attname, String propname) throws DevFailed;

	//==========================================================================
	/**
	 *	Delete a list of properties for the specified object.
	 *	@param name Class name.
	 *	@param attname attribute name.
	 *	@param propnames Property names.
	 */
	//==========================================================================
	public abstract void delete_class_attribute_property(Database database, String name,
			String attname, String[] propnames) throws DevFailed;

	//==========================================================================
	/**
	 *	Query database for list of exported devices.
	 *
	 *	@param wildcard	Wildcard char is '*' and matches wildvcard characters.
	 *	@return	The list of exported devices
	 */
	//==========================================================================
	public abstract String[] get_device_exported(Database database, String wildcard)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Query database for list of exported devices for the specified class name.
	 *
	 *	@param classname	class name to query the exported devices.
	 *	@return	The list of exported devices
	 */
	//==========================================================================
	public abstract String[] get_device_exported_for_class(Database database, String classname)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of aliases for the specified wildcard.
	 *	@param wildcard	Wildcard char is '*' and matches wildvcard characters.
	 *	@return the device aliases are stored in an array of strings.
	 */
	//==========================================================================
	public abstract String[] get_device_alias_list(Database database, String wildcard)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for an alias for the specified device.
	 *	@param devname	device's name.
	 *	@return the device alias found.
	 */
	//==========================================================================
	public abstract String get_device_alias(Database database, String devname) throws DevFailed;

    // ==========================================================================
    /**
     * Query the database for an alias for the specified device.
     *
     * @param database specified database object.
     * @param deviceName device's name.
     * @return the device alias found.
     * @throws DevFailed in case of database access failed
     */
    // ==========================================================================
    public String getAliasFromDevice(Database database, String deviceName) throws DevFailed;

    // ==========================================================================
    /**
     * Query the database for a device name for the specified alias.
     *
     * @param database specified database object.
     * @param alias alias name.
     * @return the device name found.
     * @throws DevFailed in case of database access failed
     */
    // ==========================================================================
    public String getDeviceFromAlias(Database database, String alias) throws DevFailed;

    // ==========================================================================
    /**
     * Query the database for an alias for the specified attribute.
     *
     * @param database specified database object.
     * @param  attName attribute name.
     * @return the alias found.
     * @throws DevFailed in case of database access failed
     */
    // ==========================================================================
    public String getAliasFromAttribute(Database database, String attName) throws DevFailed;

    // ==========================================================================
    /**
     * Query the database for an attribute name for the specified alias.
     *
     * @param database specified database object.
     * @param  alias alias name.
     * @return the attribute found.
     * @throws DevFailed in case of database access failed
     */
    // ==========================================================================
    public String getAttributeFromAlias(Database database, String alias) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database a device for the specified alias.
	 *	@param alias	The device name.alias
	 *	@return the device aliases are stored in an array of strings.
	 */
	//==========================================================================
	public abstract String get_alias_device(Database database, String alias) throws DevFailed;

	//==========================================================================
	/**
	 *	Set an alias for a device name
	 *	@param devname device name.
	 *	@param aliasname alias name.
	 */
	//==========================================================================
	public abstract void put_device_alias(Database database, String devname, String aliasname)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database to delete alias for the specified device alias.
	 *	@param alias	device alias name.
	 */
	//==========================================================================
	public abstract void delete_device_alias(Database database, String alias) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of aliases for the specified wildcard.
	 *	@param 	wildcard	Wildcard char is '*' and matches wildvcard characters.
	 *	@return the device aliases are stored in an array of strings.
	 */
	//==========================================================================
	public abstract String[] get_attribute_alias_list(Database database, String wildcard)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for a list of aliases for the specified attribute.
	 *	@param	attname	The attribute name.
	 *	@return the device aliases are stored in an array of strings.
	 */
	//==========================================================================
	public abstract String get_attribute_alias(Database database, String attname) throws DevFailed;

	//==========================================================================
	/**
	 *	Set an alias for a attribute name
	 *	@param attname attribute name.
	 *	@param aliasname alias name.
	 */
	//==========================================================================
	public abstract void put_attribute_alias(Database database, String attname, String aliasname)
			throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database to delete alias for the specified attribute alias.
	 *	@param alias	device alias name.
	 */
	//==========================================================================
	public abstract void delete_attribute_alias(Database database, String alias) throws DevFailed;

	//==========================================================================
	//==========================================================================
	public abstract String[] getDevices(Database database, String wildcard) throws DevFailed;

	//==========================================================================
	/**
	 *	Query the database for the export info of the specified event.
	 *	@param  channel_name	The event name.
	 *	@return the information in a DbEventImportInfo.
	 */
	//==========================================================================
	public abstract DbEventImportInfo import_event(Database database, String channel_name)
			throws DevFailed;

	//==========================================================================
	/**
	 * Returns the history of the specified device property.
	 * @param devname Device name
	 * @param propname Property name (can be wildcarded)
	 * @throws DevFailed in case of failure
	 */
	//==========================================================================
	public abstract DbHistory[] get_device_property_history(Database database, String devname,
			String propname) throws DevFailed;

	//==========================================================================
	/**
	 * Returns the history of the specified device attribute property.
	 * @param devname Device name
	 * @param attname Attribute name (can be wildcarded)
	 * @param propname Property name (can be wildcarded)
	 * @throws DevFailed in case of failure
	 */
	//==========================================================================
	public abstract DbHistory[] get_device_attribute_property_history(
			Database database, String devname, String attname, String propname) throws DevFailed;

	//==========================================================================
	/**
	 * Returns the history of the specified class property.
	 * @param classname Class name
	 * @param propname Property name (can be wildcarded)
	 * @throws DevFailed in case of failure
	 */
	//==========================================================================
	public abstract DbHistory[] get_class_property_history(Database database, String classname,
			String propname) throws DevFailed;

	//==========================================================================
	/**
	 * Returns the history of the specified class attribute property.
	 * @param classname Class name
	 * @param attname Attribute name (can be wildcarded)
	 * @param propname Property name (can be wildcarded)
	 * @throws DevFailed in case of failure
	 */
	//==========================================================================
	public abstract DbHistory[] get_class_attribute_property_history(
			Database database, String classname, String attname, String propname) throws DevFailed;

	//==========================================================================
	/**
	 * Returns the history of the specified object property.
	 * @param objname Object name
	 * @param propname Property name (can be wildcarded)
	 * @throws DevFailed in case of failure
	 */
	//==========================================================================
	public abstract DbHistory[] get_property_history(Database database, String objname,
			String propname) throws DevFailed;

	//===================================================================
	/**
	 *	Query database for specified services.
	 *
	 *	@param	servicename		The service name.
	 *	@param	instname		The instance name (could be * for all instances).
	 *	@return The device names found for specified service and instance.
	 *	@throws DevFailed in case of failure
	 */
	//===================================================================
	public abstract String[] getServices(Database database, String servicename, String instname)
			throws DevFailed;

	//===============================================================
	/**
	 *	Register a device as a Tango service :
	 *	ServiceName/InstanceName:DeviceName
	 *
	 *	@param serviceName	Service's name
	 *	@param instanceName	Instance service's name
	 *	@param devname		Device's name
	 */
	//===============================================================
	public abstract void registerService(Database database, String serviceName,
			String instanceName, String devname) throws DevFailed;

	//===============================================================
	/**
	 *	Unregister a device as a Tango service :
	 *	ServiceName/InstanceName:DeviceName
	 *
	 *	@param serviceName	Service's name
	 *	@param instanceName	Instance service's name
	 *	@param devname		Device's name
	 */
	//===============================================================
	public abstract void unregisterService(Database database, String serviceName,
			String instanceName, String devname) throws DevFailed;
	//===================================================================
	//===================================================================

	//===================================================================
	/**
	 *	Check Tango Access.
	 *	 - Check if control access is requested.
	 *	 - Check who is the user and the host.
	 *	 - Check access for this user, this host and the specified device.
	 *
	 *	@param database Database object.
	 *	@param devname Specified device name.
     *  @param devUrl  Specified device url
	 *	@return The Tango access controle found.
	 */
	//===================================================================	
	public int checkAccessControl(Database database, String devname, TangoUrl devUrl);

    //===================================================================
	/**
	 *	Check for specified device, the specified command is allowed.
	 *
     *	@param database Database object.
	 *	@param	classname Specified class name.
	 *	@param	cmd Specified command name.
	 */	
	public boolean isCommandAllowed(Database database, String classname, String cmd) throws DevFailed;
    //===================================================================
    /**
     * @return the list of possible TANGO_HOST (e.g. orion:10000, orion:11000)
     */
    //===================================================================
	public String[] getPossibleTangoHosts(Database database);




    //===================================================================
    /**
     * Pipe related methods
     */
    //===================================================================
    // ===================================================================
    /**
     * Query the database for a list of class pipe properties
     * for the specified pipe.
     * @param className specified class.
     * @param pipeName specified pipe.
     * @return a list of class pipe properties.
     * @throws DevFailed in case of database access failed
     */
    // ===================================================================
    public DbPipe getClassPipeProperties(Database database, String className, String pipeName) throws DevFailed;
    // ===================================================================
    /**
     * Query the database for a list of device pipe properties
     * for the specified pipe.
     * @param database Database object.
     * @param deviceName specified device.
     * @return a list of device pipe properties.
     * @throws DevFailed in case of database access failed
     */
    // ===================================================================
    public DbPipe getDevicePipeProperties(Database database, String deviceName, String pipeName) throws DevFailed;
    // ==========================================================================
    /**
     * Insert or update a list of pipe properties for the specified device.
     * The property names and their values are specified by the DbAPipe.
     *
     *	@param database Database object.
     * @param deviceName device name.
     * @param dbPipe pipe name, and properties (names and values).
     * @throws DevFailed in case of database access failed
     */
    // ==========================================================================
    public void putDevicePipeProperty(Database database, String deviceName, DbPipe dbPipe) throws DevFailed;
    // ==========================================================================
    /**
     * Insert or update a list of pipe properties for the specified class.
     * The property names and their values are specified by the DbAPipe.
     *
     *	@param database Database object.
     * @param className class name.
     * @param dbPipe pipe name, and properties (names and values).
     * @throws DevFailed in case of database access failed
     */
    // ==========================================================================
    public void putClassPipeProperty(Database database, String className, DbPipe dbPipe) throws DevFailed;
    // ===================================================================
    /**
     * Query database for a list of pipes for specified device and specified wildcard.
     *	@param database Database object.
     * @param deviceName specified device name.
     * @param wildcard specified wildcard.
     * @return a list of pipes defined in database for specified device and specified wildcard.
     * @throws DevFailed in case of database access failed
     */
    // ===================================================================
    public List getDevicePipeList(Database database, String deviceName, String wildcard) throws DevFailed;
   // ===================================================================
    /**
     * Query database for a list of pipes for specified class and specified wildcard.
     *	@param database Database object.
     * @param className specified class name.
     * @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 getClassPipeList(Database database, String className, String wildcard) throws DevFailed;
    // ==========================================================================
    /**
     * Delete a pipe property for the specified device.
     *
     *	@param database Database object.
     * @param deviceName Device name.
     * @param pipeName pipe name
     * @param propertyNames property names
     * @throws DevFailed in case of database access failed
     */
    // ==========================================================================
    public void deleteDevicePipeProperties(Database database, String deviceName,
                                         String pipeName, List propertyNames) throws DevFailed;
    // ==========================================================================
    /**
     * Delete a pipe property for the specified class.
     *
     * @param database Database object.
     * @param className class name.
     * @param pipeName pipe name
     * @param propertyNames property names
     * @throws DevFailed in case of database access failed
     */
    // ==========================================================================
    public void deleteClassPipeProperties(Database database, String className,
                                         String pipeName, List propertyNames) throws DevFailed;
    // ===================================================================
    /**
     * Delete specified pipe for specified device.
     * @param database Database object.
     * @param deviceName    device name
     * @param pipeName      pipe name
     * @throws DevFailed in case of database access failed
     */
    // ===================================================================
    public void deleteDevicePipe(Database database, String deviceName, String pipeName) throws DevFailed;
    // ===================================================================
    /**
     * Delete specified pipe for specified class.
     * @param database Database object.
     * @param className    class name
     * @param pipeName      pipe name
     * @throws DevFailed in case of database access failed
     */
    // ===================================================================
    public void deleteClassPipe(Database database, String className, String pipeName) throws DevFailed;
    // ===================================================================
    /**
     * Delete all properties for specified pipes
     * @param database Database object.
     * @param deviceName    device name
     * @param pipeNames     pipe names
     * @throws DevFailed  in case of database access failed
     */
    // ===================================================================
    public void deleteAllDevicePipeProperty(Database database, String deviceName,
                                            List pipeNames) throws DevFailed;
    // ===================================================================
    /**
     * Returns the property history for specified pipe.
     * @param database Database object.
     * @param deviceName    device name
     * @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 getDevicePipePropertyHistory(Database database, String deviceName,
                                                        String pipeName, String propertyName) throws DevFailed;
    // ===================================================================
    /**
     * Returns the property history for specified pipe.
     * @param database Database object.
     * @param className    class name
     * @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 getClassPipePropertyHistory(Database database, String className,
                                                       String pipeName, String propertyName) throws DevFailed;


	// ===================================================================
	/**
	 * Query database to get a list of device using the specified device as
	 * 		as root for forwarded attributes
	 * @param deviceName the specified device
	 * @return a list of device using the specified device as as root for forwarded attributes
	 * @throws DevFailed
	 */
	// ===================================================================
	public  List getForwardedAttributeDataForDevice(Database database, String deviceName) throws DevFailed;
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy