/*
* Copyright (c) 2008 Stiftung Deutsches Elektronen-Synchrotron,
* Member of the Helmholtz Association, (DESY), HAMBURG, GERMANY.
*
* THIS SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "../AS IS" BASIS.
* WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
* TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR PARTICULAR PURPOSE AND
* NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
* THE USE OR OTHER DEALINGS IN THE SOFTWARE. SHOULD THE SOFTWARE PROVE DEFECTIVE
* IN ANY RESPECT, THE USER ASSUMES THE COST OF ANY NECESSARY SERVICING, REPAIR OR
* CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE.
* NO USE OF ANY SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
* DESY HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
* OR MODIFICATIONS.
* THE FULL LICENSE SPECIFYING FOR THE SOFTWARE THE REDISTRIBUTION, MODIFICATION,
* USAGE AND OTHER RIGHTS AND OBLIGATIONS IS INCLUDED WITH THE DISTRIBUTION OF THIS
* PROJECT IN THE FILE LICENSE.HTML. IF THE LICENSE IS NOT INCLUDED YOU MAY FIND A COPY
* AT HTTP://WWW.DESY.DE/LEGAL/LICENSE.HTM
*/
package org.csstudio.platform.model.pvs;
import org.csstudio.dal.simple.RemoteInfo;
/**
* A process variable address provides consistent and convinient access to the
* information that constitute a full process variable name.
*
* These information include:
*
* <ul>
* <li>control system prefix (mandatory)</li>
* <li>device (optional)</li>
* <li>property (mandatory)</li>
* <li>characteristic (optional)</li>
* </ul>
*
* Process variable addresses should in most cases get created, using the
* {@link ProcessVariableAdressFactory} factory.
*
* @author Sven Wende
*
*/
public interface IProcessVariableAddress {
/**
* Returns the "control system" part of the process variable.
*
* @return the control system part
*/
ControlSystemEnum getControlSystem();
/**
* Returns the "device" part of the process variable.
*
* @return the device
*/
String getDevice();
/**
* Returns the "property" part of the process variable.
*
* @return the property
*/
String getProperty();
/**
* Returns the "characteristic" part of the process variable pointer or
* null.
*
* @return the characteristic part or null
*/
String getCharacteristic();
String getRawName();
String getFullName();
boolean isCharacteristic();
ValueType getValueTypeHint();
/**
* Returns a DAL {@link RemoteInfo} object for this process variable
* address. May be null, if DAL does not support this kind of PVs.
*
* @return a DAL RemoteInfo or null
*/
RemoteInfo toDalRemoteInfo();
/**
* Derives an address that cuts off an existing characteristic.
*
* @return a "normal" address (without characteristic)
*/
IProcessVariableAddress deriveNoCharacteristicPart();
/**
* Derives an address for the specified characteristic.
*
* @param characteristic
* the characteristic
*
* @return an address for a characteristic
*/
IProcessVariableAddress deriveCharacteristic(String characteristic);
}