Skip to content
BaseJavaIDL.tmpl 21.5 KiB
Newer Older
Gino Tosti's avatar
Gino Tosti committed
/**
 * ASTRI - Template based on ALMA Software Templates
 * (c) INAF/UNIPG, 2014
 *
 * This library 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 2.1 of the License, or (at your option) any later version.
 *
 * This library 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 this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 * MA 02111-1307  USA
 *
 * WARNING! DO NOT MODIFY THIS FILE!
 *  ---------------------------------------------------------
 * | This is generated code!  Do not modify this file.       |
 * | Any changes will be lost when the file is re-generated. |
 *  ---------------------------------------------------------
 *
 *  Generated by: $Author
 *  Date: $Date
 *  Description: $Description
 *
 */

package ${prefix}.${module}.${Assembly}BaseImpl;

Gino Tosti's avatar
Gino Tosti committed


import org.omg.CORBA.LongHolder;


Gino Tosti's avatar
Gino Tosti committed
import alma.ACS.ROboolean;
import alma.ACS.ROdouble;
import alma.ACS.ROfloat;
import alma.ACS.ROlong;
import alma.ACS.ROlongLong;
import alma.ACS.ROstring;
import alma.ACS.RWboolean;
import alma.ACS.RWdouble;
import alma.ACS.RWfloat;
import alma.ACS.RWlong;
import alma.ACS.RWlongLong;
import alma.ACS.RWstring;
import alma.ACS.ROdoubleSeq;
import alma.ACS.ROfloatSeq;
import alma.ACS.ROlongSeq;
import alma.ACS.ROstringSeq;
import alma.ACS.RWdoubleSeq;
import alma.ACS.RWfloatSeq;
import alma.ACS.RWlongSeq;
import alma.ACS.ROuLongLong;
import alma.ACS.RWuLongLong;

import alma.ACS.NoSuchCharacteristic;
import alma.ACS.jbaci.PropertyInitializationFailed;
import alma.ACSErr.CompletionHolder;
import alma.acs.component.ComponentLifecycleException;
import alma.JavaContainerError.wrappers.AcsJContainerServicesEx;
import alma.acs.container.ContainerServices;
import alma.maciErrType.wrappers.AcsJComponentCleanUpEx;

import ${prefix}.${module}.${Assembly}BaseOperations;
import ${prefix}.${module}.TCSHardwareDeviceImpl.TCSHardwareDeviceImpl;
Gino Tosti's avatar
Gino Tosti committed
import ${prefix}.${module}.TCSHardwareDeviceImpl.PropErrorListener;
import ${prefix}.${module}.TCSHardwareDeviceImpl.ConnectionListener;
import ${prefix}.${module}.TCSHardwareDeviceImpl.baciHelper;
Gino Tosti's avatar
Gino Tosti committed
import ${prefix}.${module}.TCSHardwareDevicePackage.tcshwState;
import ${prefix}.TCSControlExceptions.INACTErrorEx;
import ${prefix}.TCSControlExceptions.OPCUAErrorEx;
import ${prefix}.TCSControlExceptions.IllegalParameterErrorEx;
import alma.acs.exceptions.AcsJCompletion;
import alma.acs.exceptions.AcsJException;
import alma.acs.util.UTCUtility;
Gino Tosti's avatar
Gino Tosti committed
import java.util.logging.Level;
Gino Tosti's avatar
Gino Tosti committed

import com.prosysopc.ua.ServiceException;
import com.prosysopc.ua.StatusException;
import cta.acs.opcua.da.UaClientPool;
import alma.ACSErr.Completion;
Gino Tosti's avatar
Gino Tosti committed
import java.io.IOException;
import alma.ACS.jbaci.DataAccess.OnChangeNotSupportedException;
Gino Tosti's avatar
Gino Tosti committed
/**
 * @author Generated by: $Author
 * @Date: $Date
 * @Description: $Description
 *
 */
public class ${Assembly}BaseImpl extends TCSHardwareDeviceImpl implements ${Assembly}BaseOperations {

    // OPC-UA server url key in CDB
    private static final String KEY_OPC_URL = "opc_url";
    private static final String KEY_SERIAL_NUMBER = "SerialNumber";
    private static final String KEY_MONITOR_COLLECTOR = "MonitoringCollectorName";
    private String opc_url;
    private String serial_number;
    private String monitor_collector_name;
Gino Tosti's avatar
Gino Tosti committed

    protected baciHelper baciH;
Gino Tosti's avatar
Gino Tosti committed
#silent L=[]
#for $idx in $range(0,$x.GetSheet["NRows"])
#silent L.append($x.GetSheet["Short name"][$idx])
#if ($x.GetSheet["OPC UA Data type"][$idx]).upper()[-1]==']' ## test for arrays
  #set $type=($x.GetSheet["OPC UA Data type"][$idx].upper()).split("[")[0]+"[]"
#else
  #set $type=$x.GetSheet["OPC UA Data type"][$idx].upper()
#end if
Gino Tosti's avatar
Gino Tosti committed
    protected RO$y[$type][0] $x.GetSheet["Short name"][$idx];
Gino Tosti's avatar
Gino Tosti committed
#end for
#for $idx in $range(0,$x.SetSheet["NRows"])
#silent L.append($x.SetSheet["Short name"][$idx])
#if ($x.SetSheet["OPC UA Data type"][$idx]).upper()[-1]==']' ## test for arrays
  #set $type=($x.SetSheet["OPC UA Data type"][$idx].upper()).split("[")[0]+"[]"
#else
  #set $type=$x.SetSheet["OPC UA Data type"][$idx].upper()
#end if
Gino Tosti's avatar
Gino Tosti committed
    protected RW$y[$type][0] $x.SetSheet["Short name"][$idx];
Gino Tosti's avatar
Gino Tosti committed
#end for
#for $idx in $range(0,$x.ModeSheet["NRows"])
#set $name=($x.ModeSheet["OPC_UA node"][$idx].split(";")[1]).split("=")[1].replace(".","_")
#if not $name in L
Gino Tosti's avatar
Gino Tosti committed
    protected RW$y[$x.ModeSheet["OPC UA Data type"][$idx].upper()][0] $name;
Gino Tosti's avatar
Gino Tosti committed
#silent L.append($name)
#end if
#end for
#for $idx in $range(0,$x.CmdSheet["NRows"])
#set $name=($x.CmdSheet["OPC_UA node"][$idx].split(";")[1]).split("=")[1].replace(".","_")
#if not $name in L
Gino Tosti's avatar
Gino Tosti committed
    protected RW$y[$x.CmdSheet["OPC UA Data type"][$idx].upper()][0] $name;
Gino Tosti's avatar
Gino Tosti committed
#silent L.append($name)
#end if
#end for
	/*
	 * ACS Properties and DataAccess
	 */
	/* (non-Javadoc)
	 * @see alma.ACS.impl.CharacteristicComponentImpl#initialize(alma.acs.container.ContainerServices)
	 */
Gino Tosti's avatar
Gino Tosti committed
    @Override
Gino Tosti's avatar
Gino Tosti committed
    public void initialize(ContainerServices cs)  throws ComponentLifecycleException {
	if (cs != null) {
		m_logger=cs.getLogger();
Gino Tosti's avatar
Gino Tosti committed
		m_logger.info("Inizializing testDevice component");
Gino Tosti's avatar
Gino Tosti committed
		super.initialize(cs);
    	}	
Gino Tosti's avatar
Gino Tosti committed
	/*
Gino Tosti's avatar
Gino Tosti committed
	 * Loading OPC-UA configuration from CDB
	 */
Gino Tosti's avatar
Gino Tosti committed
	baciH =new baciHelper(this,m_logger);
Gino Tosti's avatar
Gino Tosti committed
	try {
Gino Tosti's avatar
Gino Tosti committed
		configureFromCDB();
		connectToDevice(opc_url);
		
	} catch (ComponentLifecycleException e) {
		m_logger.info("Error in Calling method: tcshwConfigure():"+e.getMessage());
Gino Tosti's avatar
Gino Tosti committed
	}
    }
Gino Tosti's avatar
Gino Tosti committed
    
Gino Tosti's avatar
Gino Tosti committed
    @Override
Gino Tosti's avatar
Gino Tosti committed
    public void cleanUp() throws AcsJComponentCleanUpEx {
	baciH.closeConnection();
		super.cleanUp();
	}
    
    public void connectToDevice(String url) {
    	if (url!=null) {
    		baciH.createConnection(url);
			if (baciH.isConnected()){
	    		try {
	    			createDataPoints();
	    		} catch (Exception e){
	    			m_logger.log(Level.SEVERE, e.getMessage());
	    			try {
						throw new ComponentLifecycleException("Failed to create properties"+e);
					} catch (ComponentLifecycleException e1) {
						m_logger.log(Level.SEVERE, e1.getMessage());
					}
	    		}	
	    	}else {
	    		m_logger.log(Level.SEVERE,"failed to connect to"+url);
	    	}
    	}
    }

    protected void addConnectionListener(ConnectionListener cL) {
	baciH.addConnectionListener(cL);
		
    }
	
	
    protected void addErrListener(PropErrorListener el) {
	baciH.addErrorListener(el);
    }
Gino Tosti's avatar
Gino Tosti committed

Gino Tosti's avatar
Gino Tosti committed
    private void configureFromCDB() throws ComponentLifecycleException {
    	try {
    		monitor_collector_name = loadFromCDB(KEY_MONITOR_COLLECTOR);
    		if(!monitor_collector_name.equals("TDB")){
    		   setMonitoringCollectorName(monitor_collector_name);
    	}else{
    		m_logger.log(Level.SEVERE, "MONITOR_COLLECTOR_NAME is not defined in CDB ");
    		throw new ComponentLifecycleException();
    	}
    	} catch (NoSuchCharacteristic e) {
    		m_logger.log(Level.SEVERE, "MONITOR_COLLECTOR_NAME found in CDB "+e);
    	}
    	try {
    		serial_number = loadFromCDB(KEY_SERIAL_NUMBER);
    		setSerialNumber(serial_number);
    	} catch (NoSuchCharacteristic e) {
    		m_logger.log(Level.SEVERE, "No SERIAL NUMBER found in CDB "+e);
    	}
	try {
    		this.opc_url = loadFromCDB(KEY_OPC_URL);
    	} catch (NoSuchCharacteristic e) {
    		m_logger.log(Level.SEVERE, "No OPC-UA url found in CDB "+e);
    	}
Gino Tosti's avatar
Gino Tosti committed
    }
Gino Tosti's avatar
Gino Tosti committed
    public String getOpc_url() {
 		return opc_url;
 	}

    public void setOpc_url(String opc_url) {
 		this.opc_url = opc_url;
 	}
Gino Tosti's avatar
Gino Tosti committed
 	
    public String getSerial_number() {
 			return serial_number;
 		}
    public void setSerial_number(String serial_number) {
 			this.serial_number = serial_number;
 		}
    public String getMonitor_collector_name() {
 			return monitor_collector_name;
 		}
    public void setMonitor_collector_name(String monitor_collector_name) {
 			this.monitor_collector_name = monitor_collector_name;
 		}
    
     
    private void createDataPoints() throws  IllegalArgumentException,PropertyInitializationFailed, ServiceException, StatusException, StatusException, IOException, OnChangeNotSupportedException{
Gino Tosti's avatar
Gino Tosti committed
#silent L=[]
#for $idx in $range(0,$x.GetSheet["NRows"])
#silent L.append($x.GetSheet["Short name"][$idx])
#if ($x.GetSheet["OPC UA Data type"][$idx]).upper()[-1]==']' ## test for arrays
#set $type=($x.GetSheet["OPC UA Data type"][$idx].upper()).split("[")[0]+"[]"
        	try {
Gino Tosti's avatar
Gino Tosti committed
			$x.GetSheet["Short name"][$idx] = baciH.createRO${y[$type][0]}Prop("$x.GetSheet["Short name"][$idx]","$x.GetSheet["OPC_UA node"][$idx]");
Gino Tosti's avatar
Gino Tosti committed
		} catch (IllegalArgumentException|PropertyInitializationFailed e){
Gino Tosti's avatar
Gino Tosti committed
			m_logger.log(Level.SEVERE, "Exception in creating Property:"+"$x.GetSheet["Short name"][$idx]"+":"+e.getMessage());
Gino Tosti's avatar
Gino Tosti committed
		}		
#else if ($x.GetSheet["OPC UA Data type"][$idx]).upper()=='INT16'
#set $type=$x.GetSheet["OPC UA Data type"][$idx].upper()
		try {
Gino Tosti's avatar
Gino Tosti committed
			$x.GetSheet["Short name"][$idx] = baciH.createRO${y[$type][0]}Prop("$x.GetSheet["Short name"][$idx]","$x.GetSheet["OPC_UA node"][$idx]");
Gino Tosti's avatar
Gino Tosti committed
#if str($x.GetSheet["Alarm high"][$idx]) !="nan" and str($x.GetSheet["Alarm high"][$idx]).strip() !="NA" and str($x.GetSheet["Alarm high"][$idx]).strip() !="" and $y[$type][1] != "S"
#if str($x.GetSheet["Alarm high"][$idx]) !="nan" and str($x.GetSheet["Alarm high"][$idx]).strip() !="NA" and str($x.GetSheet["Alarm high"][$idx]).strip() !="" and $y[$type][1] != "S"
			baciH.addValueListener("$x.GetSheet["Short name"][$idx]",$x.GetSheet["Sampling Interval (s)"][$idx],$x.GetSheet["Sampling Interval (s)"][$idx]);
  #end if
 #end if
Gino Tosti's avatar
Gino Tosti committed
		} catch (IllegalArgumentException|PropertyInitializationFailed e){
Gino Tosti's avatar
Gino Tosti committed
			m_logger.log(Level.SEVERE, "Exception in creating Property:"+"$x.GetSheet["Short name"][$idx]"+":"+e.getMessage());
Gino Tosti's avatar
Gino Tosti committed
		}		
#else if ($x.GetSheet["OPC UA Data type"][$idx]).upper()=='UINT16'
#set $type=$x.GetSheet["OPC UA Data type"][$idx].upper()
		try {
Gino Tosti's avatar
Gino Tosti committed
			$x.GetSheet["Short name"][$idx] = baciH.createRO${y[$type][0]}Prop("$x.GetSheet["Short name"][$idx]","$x.GetSheet["OPC_UA node"][$idx]");
Gino Tosti's avatar
Gino Tosti committed
#if str($x.GetSheet["Alarm high"][$idx]) !="nan" and str($x.GetSheet["Alarm high"][$idx]).strip() !="NA" and str($x.GetSheet["Alarm high"][$idx]).strip() !="" and $y[$type][1] != "S"
#if str($x.GetSheet["Alarm low"][$idx]) !="nan" and str($x.GetSheet["Alarm low"][$idx]).strip() !="NA" and str($x.GetSheet["Alarm low"][$idx]).strip() !="" and $y[$type][1] != "S"
Gino Tosti's avatar
Gino Tosti committed
			baciH.addValueListener("$x.GetSheet["Short name"][$idx]",$x.GetSheet["Sampling Interval (s)"][$idx],$x.GetSheet["Sampling Interval (s)"][$idx]);
  #end if
 #end if
Gino Tosti's avatar
Gino Tosti committed
		} catch (IllegalArgumentException|PropertyInitializationFailed e){
Gino Tosti's avatar
Gino Tosti committed
			m_logger.log(Level.SEVERE, "Exception in creating Property:"+"$x.GetSheet["Short name"][$idx]"+":"+e.getMessage());
Gino Tosti's avatar
Gino Tosti committed
		}
#else if ($x.GetSheet["OPC UA Data type"][$idx]).upper()=='UINT32'
#set $type=$x.GetSheet["OPC UA Data type"][$idx].upper()
		try {
Gino Tosti's avatar
Gino Tosti committed
			$x.GetSheet["Short name"][$idx] = baciH.createRO${y[$type][0]}Prop("$x.GetSheet["Short name"][$idx]","$x.GetSheet["OPC_UA node"][$idx]");
Gino Tosti's avatar
Gino Tosti committed
#if str($x.GetSheet["Alarm high"][$idx]) !="nan" and str($x.GetSheet["Alarm high"][$idx]).strip() !="NA" and str($x.GetSheet["Alarm high"][$idx]).strip() !="" and $y[$type][1] != "S"
#if str($x.GetSheet["Alarm low"][$idx]) !="nan" and str($x.GetSheet["Alarm low"][$idx]).strip() !="NA" and str($x.GetSheet["Alarm low"][$idx]).strip() !="" and $y[$type][1] != "S"
Gino Tosti's avatar
Gino Tosti committed
			baciH.addValueListener("$x.GetSheet["Short name"][$idx]",$x.GetSheet["Sampling Interval (s)"][$idx],$x.GetSheet["Sampling Interval (s)"][$idx]);
  #end if
 #end if
Gino Tosti's avatar
Gino Tosti committed
		} catch (IllegalArgumentException|PropertyInitializationFailed e){
Gino Tosti's avatar
Gino Tosti committed
			m_logger.log(Level.SEVERE, "Exception in creating Property:"+"$x.GetSheet["Short name"][$idx]"+":"+e.getMessage());
Gino Tosti's avatar
Gino Tosti committed
		}
#else
#set $type=$x.GetSheet["OPC UA Data type"][$idx].upper()
		try {
Gino Tosti's avatar
Gino Tosti committed
			$x.GetSheet["Short name"][$idx] = baciH.createRO${y[$type][0]}Prop("$x.GetSheet["Short name"][$idx]","$x.GetSheet["OPC_UA node"][$idx]");
Gino Tosti's avatar
Gino Tosti committed
#if str($x.GetSheet["Alarm high"][$idx]) !="nan" and str($x.GetSheet["Alarm high"][$idx]).strip() !="NA" and str($x.GetSheet["Alarm high"][$idx]).strip() !="" and $y[$type][1] != "S"
#if str($x.GetSheet["Alarm low"][$idx]) !="nan" and str($x.GetSheet["Alarm low"][$idx]).strip() !="NA" and str($x.GetSheet["Alarm low"][$idx]).strip() !="" and $y[$type][1] != "S"
Gino Tosti's avatar
Gino Tosti committed
			baciH.addValueListener("$x.GetSheet["Short name"][$idx]",$x.GetSheet["Sampling Interval (s)"][$idx],$x.GetSheet["Sampling Interval (s)"][$idx]);
  #end if
 #end if
Gino Tosti's avatar
Gino Tosti committed
		} catch (IllegalArgumentException|PropertyInitializationFailed e){
Gino Tosti's avatar
Gino Tosti committed
			m_logger.log(Level.SEVERE, "Exception in creating Property:"+"$x.GetSheet["Short name"][$idx]"+":"+e.getMessage());
Gino Tosti's avatar
Gino Tosti committed
		}	
#end if
#end for
#for $idx in $range(0,$x.SetSheet["NRows"])
#silent L.append($x.SetSheet["Short name"][$idx])
#if ($x.SetSheet["OPC UA Data type"][$idx]).upper()[-1]==']' ## test for arrays
#set $type=($x.SetSheet["OPC UA Data type"][$idx].upper()).split("[")[0]+"[]"
Gino Tosti's avatar
Gino Tosti committed
		try{		
			$x.SetSheet["Short name"][$idx] = baciH.createRW${y[$type][0]}Prop("$x.SetSheet["Short name"][$idx]","$x.SetSheet["OPC_UA node"][$idx]");
Gino Tosti's avatar
Gino Tosti committed
		} catch (IllegalArgumentException|PropertyInitializationFailed e){
Gino Tosti's avatar
Gino Tosti committed
			m_logger.log(Level.SEVERE, "Exception in creating Property:"+"$x.SetSheet["Short name"][$idx]"+":"+e.getMessage());
Gino Tosti's avatar
Gino Tosti committed
		}
#else if ($x.SetSheet["OPC UA Data type"][$idx]).upper()=='INT16'
#set $type=$x.SetSheet["OPC UA Data type"][$idx].upper()
		try{
Gino Tosti's avatar
Gino Tosti committed
			$x.SetSheet["Short name"][$idx] = baciH.createRW${y[$type][0]}Prop("$x.SetSheet["Short name"][$idx]","$x.SetSheet["OPC_UA node"][$idx]");
Gino Tosti's avatar
Gino Tosti committed
		} catch (IllegalArgumentException|PropertyInitializationFailed e){
Gino Tosti's avatar
Gino Tosti committed
			m_logger.log(Level.SEVERE, "Exception in creating Property:"+"$x.SetSheet["Short name"][$idx]"+":"+e.getMessage());
Gino Tosti's avatar
Gino Tosti committed
		}
#else if ($x.SetSheet["OPC UA Data type"][$idx]).upper()=='UINT16'
#set $type=$x.SetSheet["OPC UA Data type"][$idx].upper()
		try{
Gino Tosti's avatar
Gino Tosti committed
			$x.SetSheet["Short name"][$idx] = baciH.createRW${y[$type][0]}Prop("$x.SetSheet["Short name"][$idx]","$x.SetSheet["OPC_UA node"][$idx]");
Gino Tosti's avatar
Gino Tosti committed
		} catch (IllegalArgumentException|PropertyInitializationFailed e){
Gino Tosti's avatar
Gino Tosti committed
			m_logger.log(Level.SEVERE, "Exception in creating Property:"+"$x.SetSheet["Short name"][$idx]"+":"+e.getMessage());
Gino Tosti's avatar
Gino Tosti committed
		}
#else if ($x.SetSheet["OPC UA Data type"][$idx]).upper()=='UINT32'
#set $type=$x.SetSheet["OPC UA Data type"][$idx].upper()
Gino Tosti's avatar
Gino Tosti committed
			$x.SetSheet["Short name"][$idx] = baci.HcreateRW${y[$type][0]}Prop("$x.SetSheet["Short name"][$idx]","$x.SetSheet["OPC_UA node"][$idx]");
Gino Tosti's avatar
Gino Tosti committed
		} catch (IllegalArgumentException|PropertyInitializationFailed e){
Gino Tosti's avatar
Gino Tosti committed
			m_logger.log(Level.SEVERE, "Exception in creating Property:"+"$x.SetSheet["Short name"][$idx]"+":"+e.getMessage());
Gino Tosti's avatar
Gino Tosti committed
		}
#else
#set $type=$x.SetSheet["OPC UA Data type"][$idx].upper() 
Gino Tosti's avatar
Gino Tosti committed
		try{    	
			$x.SetSheet["Short name"][$idx] = baciH.createRW${y[$type][0]}Prop("$x.SetSheet["Short name"][$idx]","$x.SetSheet["OPC_UA node"][$idx]");
Gino Tosti's avatar
Gino Tosti committed
		} catch (IllegalArgumentException|PropertyInitializationFailed e){
Gino Tosti's avatar
Gino Tosti committed
			m_logger.log(Level.SEVERE, "Exception in creating Property:"+"$x.SetSheet["Short name"][$idx]"+":"+e.getMessage());
Gino Tosti's avatar
Gino Tosti committed
		}	
#end if	
#end for
#for $idx in $range(0,$x.ModeSheet["NRows"])
#set $name=($x.ModeSheet["OPC_UA node"][$idx].split(";")[1]).split("=")[1].replace(".","_")
#if not $name in L
		try{
#if ($x.ModeSheet["OPC UA Data type"][$idx]).upper()=='INT16'
Gino Tosti's avatar
Gino Tosti committed
			$name = baciH.createRW${y[$x.ModeSheet["OPC UA Data type"][$idx].upper()][0]}Prop("$name","$x.ModeSheet["OPC_UA node"][$idx]","INT16");	
#else 
			$name = baciH.createRW${y[$x.ModeSheet["OPC UA Data type"][$idx].upper()][0]}Prop("$name","$x.ModeSheet["OPC_UA node"][$idx]");
#end if
Gino Tosti's avatar
Gino Tosti committed
		} catch (IllegalArgumentException|PropertyInitializationFailed e){
Gino Tosti's avatar
Gino Tosti committed
			m_logger.log(Level.SEVERE, "Exception in creating Property:"+"$x.ModeSheet["Short name"][$idx]"+":"+e.getMessage());
Gino Tosti's avatar
Gino Tosti committed
		}		
#silent L.append($name)
#end if
#end for
#for $idx in $range(0,$x.CmdSheet["NRows"])
#set $name=($x.CmdSheet["OPC_UA node"][$idx].split(";")[1]).split("=")[1].replace(".","_")
#if not $name in L
Gino Tosti's avatar
Gino Tosti committed
		try{
Gino Tosti's avatar
Gino Tosti committed
#if ($x.CmdSheet["OPC UA Data type"][$idx]).upper()=='INT16'
Gino Tosti's avatar
Gino Tosti committed
			$name = baciH.createRW${y[$x.ModeSheet["OPC UA Data type"][$idx].upper()][0]}Prop("$name","$x.ModeSheet["OPC_UA node"][$idx]","INT16");
Gino Tosti's avatar
Gino Tosti committed
#else
Gino Tosti's avatar
Gino Tosti committed
			$name = baciH.createRW${y[$x.CmdSheet["OPC UA Data type"][$idx].upper()][0]}Prop("$name", "$x.CmdSheet["OPC_UA node"][$idx]");
#end if			
Gino Tosti's avatar
Gino Tosti committed
		} catch (IllegalArgumentException|PropertyInitializationFailed e){
Gino Tosti's avatar
Gino Tosti committed
			m_logger.log(Level.SEVERE, "Exception in creating Property:"+"$x.CmdSheet["Short name"][$idx]"+":"+e.getMessage());
Gino Tosti's avatar
Gino Tosti committed
		}		
#silent L.append($name)
#end if
#end for		
    }
#silent L=[]
Gino Tosti's avatar
Gino Tosti committed

Gino Tosti's avatar
Gino Tosti committed

#for $idx in $range(0,$x.GetSheet["NRows"])
#if ($x.GetSheet["OPC UA Data type"][$idx]).upper()[-1]==']' ## test for arrays
#set $type=($x.GetSheet["OPC UA Data type"][$idx].upper()).split("[")[0]+"[]"
	@Override
	public $($y[$type][4])$([]) ${x.GetSheet["Name of command"][$idx]}(LongHolder arg0) {
Gino Tosti's avatar
Gino Tosti committed
		$($y[$type][4])$([]) val = baciH.get$(($y[$type][4]).capitalize())ArrayValSync(${x.GetSheet["Short name"][$idx]},arg0);		
		return val;
Gino Tosti's avatar
Gino Tosti committed
	}
#else
#set $type=$x.GetSheet["OPC UA Data type"][$idx].upper()
        @Override
	public $($y[$type][4]) ${x.GetSheet["Name of command"][$idx]}(LongHolder arg0) {
#if $y[$type][4] == "boolean"
		$($y[$type][4]) val = false;
#else if $y[$type][4] == "String"
		$($y[$type][4]) val = null;
#else
		$($y[$type][4]) val = 0;	
#end if
Gino Tosti's avatar
Gino Tosti committed
		val = baciH.get$(($y[$type][4]).capitalize())ValSync(${x.GetSheet["Short name"][$idx]},arg0);
Gino Tosti's avatar
Gino Tosti committed
		return val;
	}
#end if
#end for

#for $idx in $range(0,$x.SetSheet["NRows"])
#if ($x.SetSheet["OPC UA Data type"][$idx]).upper()[-1]==']' ## test for arrays
  #set $type=($x.SetSheet["OPC UA Data type"][$idx].upper()).split("[")[0]+"[]"
Gino Tosti's avatar
Gino Tosti committed
	@Override
	public $($y[$type][4])$([]) G${x.SetSheet["Name of command"][$idx][1:]}(LongHolder arg0) {	
		$($y[$type][4])$([]) val=baciH.get$(($y[$type][4]).capitalize())ArrayValSync(${x.SetSheet["Short name"][$idx]},arg0);
Gino Tosti's avatar
Gino Tosti committed
		return val;
Gino Tosti's avatar
Gino Tosti committed
	}

Gino Tosti's avatar
Gino Tosti committed
	@Override
	public void ${x.SetSheet["Name of command"][$idx]}($($y[$type][4])$([]) arg0) throws IllegalParameterErrorEx,INACTErrorEx {
		baciH.set$(($y[$type][4]).capitalize())ArrayValSync(${x.SetSheet["Short name"][$idx]},arg0);
Gino Tosti's avatar
Gino Tosti committed
	}
#else
#set $type=$x.SetSheet["OPC UA Data type"][$idx].upper()
	@Override
	public $($y[$type][4]) G${x.SetSheet["Name of command"][$idx][1:]}(LongHolder arg0) {
#if $y[$type][4] == "boolean"
Gino Tosti's avatar
Gino Tosti committed
		$($y[$type][4]) val = false;
Gino Tosti's avatar
Gino Tosti committed
#else if $y[$type][4] == "String"
Gino Tosti's avatar
Gino Tosti committed
		$($y[$type][4]) val = null;
Gino Tosti's avatar
Gino Tosti committed
#else
Gino Tosti's avatar
Gino Tosti committed
		$($y[$type][4]) val = 0;	
Gino Tosti's avatar
Gino Tosti committed
#end if
Gino Tosti's avatar
Gino Tosti committed
		val = baciH.get$(($y[$type][4]).capitalize())ValSync(${x.SetSheet["Short name"][$idx]},arg0);
		return val;
Gino Tosti's avatar
Gino Tosti committed
	}
	@Override
	public void ${x.SetSheet["Name of command"][$idx]}($($y[$type][4]) arg0) throws IllegalParameterErrorEx,INACTErrorEx {
#if str($x.SetSheet["Alarm high"][$idx]) !="nan" and str($x.SetSheet["Alarm high"][$idx]).strip() !="NA" and str($x.SetSheet["Alarm high"][$idx]).strip() !="" and $y[$type][1] != "S" and str($x.SetSheet["Alarm low"][$idx]).strip() !="nan" and  str($x.SetSheet["Alarm low"][$idx]).strip() !="NA" and  str($x.SetSheet["Alarm low"][$idx]).strip() !="" and $y[$type][1] != "S"
#if $type[0]=="I" or $type[0]=="U" 

	   	$($y[$type][4]) minval = ${str($x.SetSheet["Alarm low"][$idx]).split(".")[0]};
		$($y[$type][4]) maxval = ${str($x.SetSheet["Alarm high"][$idx]).split(".")[0]};
#else
		$($y[$type][4]) minval = ${str($x.SetSheet["Alarm low"][$idx])};
		$($y[$type][4]) maxval = ${str($x.SetSheet["Alarm high"][$idx])};
#end if
		if (arg0>=minval && arg0<=maxval){
			baciH.set$(($y[$type][4]).capitalize())ValSync(${x.SetSheet["Short name"][$idx]},arg0);
		} else {
			m_logger.log(Level.SEVERE, "Value outside range for:"+"$x.SetSheet["Short name"][$idx]");
Gino Tosti's avatar
Gino Tosti committed
			throw new IllegalParameterErrorEx();
#else 
		baciH.set$(($y[$type][4]).capitalize())ValSync(${x.SetSheet["Short name"][$idx]},arg0);
#end if
Gino Tosti's avatar
Gino Tosti committed
		
	}
#end if
#end for
#for $idx in $range(0,$x.ModeSheet["NRows"])
#set $name=($x.ModeSheet["OPC_UA node"][$idx].split(";")[1]).split("=")[1].replace(".","_")
#set $type=$x.ModeSheet["OPC UA Data type"][$idx].upper()
#if $x.ModeSheet["OPC UA Data type"][$idx].upper()=="INT16"
#set $value=$x.ModeSheet["CMD/MODE value"][$idx].split('.')[0]
Gino Tosti's avatar
Gino Tosti committed
#else if $x.ModeSheet["OPC UA Data type"][$idx].upper()=="INT32"
#set $value=$x.ModeSheet["CMD/MODE value"][$idx].split('.')[0]
Gino Tosti's avatar
Gino Tosti committed
#else if $x.ModeSheet["OPC UA Data type"][$idx].upper()=="BOOLEAN"
#set $value=str($x.ModeSheet["CMD/MODE value"][$idx]).lower()
#else
#set $value=str($x.ModeSheet["CMD/MODE value"][$idx])
#end if
	@Override
	public void ${x.ModeSheet["Name of command"][$idx]}() throws IllegalParameterErrorEx,INACTErrorEx {
Gino Tosti's avatar
Gino Tosti committed
		baciH.set$(($y[$type][4]).capitalize())ValSync(${name},$value);	
Gino Tosti's avatar
Gino Tosti committed
	}
#end for

#for $idx in $range(0,$x.CmdSheet["NRows"])
#set $name=($x.CmdSheet["OPC_UA node"][$idx].split(";")[1]).split("=")[1].replace(".","_")
#set $type=$x.CmdSheet["OPC UA Data type"][$idx].upper()
#if $x.CmdSheet["OPC UA Data type"][$idx].upper()=="INT16"
#set $value=$x.CmdSheet["CMD/MODE value"][$idx].split('.')[0]
Gino Tosti's avatar
Gino Tosti committed
#else if $x.CmdSheet["OPC UA Data type"][$idx].upper()=="INT32"
#set $value=$x.CmdSheet["CMD/MODE value"][$idx].split('.')[0]
Gino Tosti's avatar
Gino Tosti committed
#else if $x.CmdSheet["OPC UA Data type"][$idx].upper()=="BOOLEAN"
#set $value=str($x.CmdSheet["CMD/MODE value"][$idx]).lower()
#else
#set $value=str($x.CmdSheet["CMD/MODE value"][$idx])
#end if
	@Override
	public void ${x.CmdSheet["Name of command"][$idx]}() throws IllegalParameterErrorEx,INACTErrorEx {
Gino Tosti's avatar
Gino Tosti committed
		baciH.set$(($y[$type][4]).capitalize())ValSync(${name},$value);		
Gino Tosti's avatar
Gino Tosti committed
	}
#end for

	private String loadFromCDB(String cdbKey) throws NoSuchCharacteristic {
	    String s = characteristicModelImpl.getString(cdbKey);
	    if (s == null) {
	        throw new NoSuchCharacteristic();
	    }
	    return s;
	}
}