Loading src/DataImporter.cpp +244 −1 Original line number Diff line number Diff line Loading @@ -57,6 +57,8 @@ //================================================================ // State | Inherited (no method) // Status | Inherited (no method) // On | on // Off | off //================================================================ //================================================================ Loading Loading @@ -137,7 +139,9 @@ void DataImporter::init_device() /*----- PROTECTED REGION END -----*/ // DataImporter::init_device_before // No device property to be read from database // Get the device properties from database get_device_property(); /*----- PROTECTED REGION ID(DataImporter::init_device) ENABLED START -----*/ Loading @@ -147,6 +151,213 @@ void DataImporter::init_device() /*----- PROTECTED REGION END -----*/ // DataImporter::init_device } //-------------------------------------------------------- /** * Method : DataImporter::get_device_property() * Description : Read database to initialize property data members. */ //-------------------------------------------------------- void DataImporter::get_device_property() { /*----- PROTECTED REGION ID(DataImporter::get_device_property_before) ENABLED START -----*/ // Initialize property data members /*----- PROTECTED REGION END -----*/ // DataImporter::get_device_property_before // Read device properties from database. Tango::DbData dev_prop; dev_prop.push_back(Tango::DbDatum("CertificateFile")); dev_prop.push_back(Tango::DbDatum("StoragePath")); dev_prop.push_back(Tango::DbDatum("RemoteHost")); dev_prop.push_back(Tango::DbDatum("RemotePort")); dev_prop.push_back(Tango::DbDatum("RemoteUsername")); dev_prop.push_back(Tango::DbDatum("RemotePassword")); dev_prop.push_back(Tango::DbDatum("EnableSSL")); dev_prop.push_back(Tango::DbDatum("DatabaseHost")); dev_prop.push_back(Tango::DbDatum("DatabasePort")); dev_prop.push_back(Tango::DbDatum("DatabaseUsername")); dev_prop.push_back(Tango::DbDatum("DatabasePassword")); dev_prop.push_back(Tango::DbDatum("DatabaseSchema")); dev_prop.push_back(Tango::DbDatum("DatabaseTable")); dev_prop.push_back(Tango::DbDatum("Timeout")); // is there at least one property to be read ? if (dev_prop.size()>0) { // Call database and extract values if (Tango::Util::instance()->_UseDb==true) get_db_device()->get_property(dev_prop); // get instance on DataImporterClass to get class property Tango::DbDatum def_prop, cl_prop; DataImporterClass *ds_class = (static_cast<DataImporterClass *>(get_device_class())); int i = -1; // Try to initialize CertificateFile from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> certificateFile; else { // Try to initialize CertificateFile from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> certificateFile; } // And try to extract CertificateFile value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> certificateFile; // Try to initialize StoragePath from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> storagePath; else { // Try to initialize StoragePath from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> storagePath; } // And try to extract StoragePath value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> storagePath; // Try to initialize RemoteHost from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> remoteHost; else { // Try to initialize RemoteHost from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> remoteHost; } // And try to extract RemoteHost value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> remoteHost; // Try to initialize RemotePort from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> remotePort; else { // Try to initialize RemotePort from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> remotePort; } // And try to extract RemotePort value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> remotePort; // Try to initialize RemoteUsername from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> remoteUsername; else { // Try to initialize RemoteUsername from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> remoteUsername; } // And try to extract RemoteUsername value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> remoteUsername; // Try to initialize RemotePassword from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> remotePassword; else { // Try to initialize RemotePassword from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> remotePassword; } // And try to extract RemotePassword value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> remotePassword; // Try to initialize EnableSSL from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> enableSSL; else { // Try to initialize EnableSSL from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> enableSSL; } // And try to extract EnableSSL value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> enableSSL; // Try to initialize DatabaseHost from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> databaseHost; else { // Try to initialize DatabaseHost from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> databaseHost; } // And try to extract DatabaseHost value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> databaseHost; // Try to initialize DatabasePort from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> databasePort; else { // Try to initialize DatabasePort from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> databasePort; } // And try to extract DatabasePort value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> databasePort; // Try to initialize DatabaseUsername from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> databaseUsername; else { // Try to initialize DatabaseUsername from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> databaseUsername; } // And try to extract DatabaseUsername value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> databaseUsername; // Try to initialize DatabasePassword from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> databasePassword; else { // Try to initialize DatabasePassword from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> databasePassword; } // And try to extract DatabasePassword value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> databasePassword; // Try to initialize DatabaseSchema from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> databaseSchema; else { // Try to initialize DatabaseSchema from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> databaseSchema; } // And try to extract DatabaseSchema value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> databaseSchema; // Try to initialize DatabaseTable from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> databaseTable; else { // Try to initialize DatabaseTable from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> databaseTable; } // And try to extract DatabaseTable value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> databaseTable; // Try to initialize Timeout from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> timeout; else { // Try to initialize Timeout from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> timeout; } // And try to extract Timeout value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> timeout; } /*----- PROTECTED REGION ID(DataImporter::get_device_property_after) ENABLED START -----*/ // Check device property data members init /*----- PROTECTED REGION END -----*/ // DataImporter::get_device_property_after } //-------------------------------------------------------- /** Loading Loading @@ -197,6 +408,38 @@ void DataImporter::add_dynamic_attributes() /*----- PROTECTED REGION END -----*/ // DataImporter::add_dynamic_attributes } //-------------------------------------------------------- /** * Command On related method * Description: Activate data importer * */ //-------------------------------------------------------- void DataImporter::on() { DEBUG_STREAM << "DataImporter::On() - " << device_name << endl; /*----- PROTECTED REGION ID(DataImporter::on) ENABLED START -----*/ // Add your own code /*----- PROTECTED REGION END -----*/ // DataImporter::on } //-------------------------------------------------------- /** * Command Off related method * Description: Deactivate data importer * */ //-------------------------------------------------------- void DataImporter::off() { DEBUG_STREAM << "DataImporter::Off() - " << device_name << endl; /*----- PROTECTED REGION ID(DataImporter::off) ENABLED START -----*/ // Add your own code /*----- PROTECTED REGION END -----*/ // DataImporter::off } /*----- PROTECTED REGION ID(DataImporter::namespace_ending) ENABLED START -----*/ Loading src/DataImporter.h +48 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,36 @@ class DataImporter : public TANGO_BASE_CLASS /*----- PROTECTED REGION END -----*/ // DataImporter::Data Members // Device property data members public: // CertificateFile: Absolute path to certificate chain file string certificateFile; // StoragePath: Absolute path to storage string storagePath; // RemoteHost: Metadata exporter remote host string remoteHost; // RemotePort: Metadata exporter remote port Tango::DevULong remotePort; // RemoteUsername: Metadata exporter login username string remoteUsername; // RemotePassword: Metadata exporter remote password string remotePassword; // EnableSSL: Enable or disable SSL connections Tango::DevBoolean enableSSL; // DatabaseHost: Metadata local database host string databaseHost; // DatabasePort: Metadata local database port Tango::DevULong databasePort; // DatabaseUsername: Metadata local database username string databaseUsername; // DatabasePassword: Metadata local database password string databasePassword; // DatabaseSchema: Metadata local database schema string databaseSchema; // DatabaseTable: Metadata local database table string databaseTable; // Timeout: Connection timeout (seconds) string timeout; // Constructors and destructors Loading Loading @@ -107,6 +137,10 @@ public: * Initialize the device */ virtual void init_device(); /* * Read the device properties from database */ void get_device_property(); /* * Always executed method before execution command method. */ Loading Loading @@ -136,6 +170,20 @@ public: // Command related methods public: /** * Command On related method * Description: Activate data importer * */ virtual void on(); virtual bool is_On_allowed(const CORBA::Any &any); /** * Command Off related method * Description: Deactivate data importer * */ virtual void off(); virtual bool is_Off_allowed(const CORBA::Any &any); /*----- PROTECTED REGION ID(DataImporter::Additional Method prototypes) ENABLED START -----*/ Loading src/DataImporter.xmi +97 −1 Original line number Diff line number Diff line <?xml version="1.0" encoding="ASCII"?> <pogoDsl:PogoSystem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pogoDsl="http://www.esrf.fr/tango/pogo/PogoDsl"> <classes name="DataImporter" pogoRevision="8.1"> <description description="" title="Data importer" sourcePath="/home/mdm/workspace/nadir/data_importer/src" language="Cpp" filestogenerate="XMI file,Code files" license="GPL" hasMandatoryProperty="false" hasConcreteProperty="false" hasAbstractCommand="false" hasAbstractAttribute="false"> <description description="" title="Data importer" sourcePath="/home/mdm/workspace/nadir/data_importer/src" language="Cpp" filestogenerate="XMI file,Code files" license="GPL" hasMandatoryProperty="false" hasConcreteProperty="true" hasAbstractCommand="false" hasAbstractAttribute="false"> <inheritances classname="Device_Impl" sourcePath=""/> <identification contact="at oats.inaf.it - demarco" author="demarco" emailDomain="oats.inaf.it" classFamily="Communication" siteSpecific="" platform="Unix Like" bus="TCP/UDP" manufacturer="none" reference=""/> </description> <classProperties name="CertificateFile" description="Absolute path to certificate chain file"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </classProperties> <classProperties name="StoragePath" description="Absolute path to storage"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </classProperties> <deviceProperties name="CertificateFile" description="Absolute path to certificate chain file"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="StoragePath" description="Absolute path to storage"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="RemoteHost" description="Metadata exporter remote host"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="RemotePort" description="Metadata exporter remote port"> <type xsi:type="pogoDsl:UIntType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="RemoteUsername" description="Metadata exporter login username"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="RemotePassword" description="Metadata exporter remote password"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="EnableSSL" description="Enable or disable SSL connections"> <type xsi:type="pogoDsl:BooleanType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="DatabaseHost" description="Metadata local database host"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="DatabasePort" description="Metadata local database port"> <type xsi:type="pogoDsl:UIntType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="DatabaseUsername" description="Metadata local database username"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="DatabasePassword" description="Metadata local database password"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="DatabaseSchema" description="Metadata local database schema"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="DatabaseTable" description="Metadata local database table"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="Timeout" description="Connection timeout (seconds)"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> <DefaultPropValue>60</DefaultPropValue> </deviceProperties> <commands name="State" description="This command gets the device state (stored in its device_state data member) and returns it to the caller." execMethod="dev_state" displayLevel="OPERATOR" polledPeriod="0"> <argin description="none"> <type xsi:type="pogoDsl:VoidType"/> Loading @@ -23,6 +88,37 @@ </argout> <status abstract="true" inherited="true" concrete="true"/> </commands> <commands name="On" description="Activate data importer" execMethod="on" displayLevel="OPERATOR" polledPeriod="0"> <argin description=""> <type xsi:type="pogoDsl:VoidType"/> </argin> <argout description=""> <type xsi:type="pogoDsl:VoidType"/> </argout> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> <excludedStates>ON</excludedStates> <excludedStates>FAULT</excludedStates> </commands> <commands name="Off" description="Deactivate data importer" execMethod="off" displayLevel="OPERATOR" polledPeriod="0"> <argin description=""> <type xsi:type="pogoDsl:VoidType"/> </argin> <argout description=""> <type xsi:type="pogoDsl:VoidType"/> </argout> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> <excludedStates>OFF</excludedStates> <excludedStates>FAULT</excludedStates> </commands> <states name="ON" description="Data exporter is in ON state (ready for file transfer)"> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </states> <states name="OFF" description="Data exporter is in OFF state (not ready for file transfer)"> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </states> <states name="FAULT" description="Data exporter is in FAULT state (an error occurred)"> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </states> <preferences docHome="./doc_html" makefileHome="/usr/local/tango-8.1.2/share/pogo/preferences"/> </classes> </pogoDsl:PogoSystem> src/DataImporterClass.cpp +318 −0 File changed.Preview size limit exceeded, changes collapsed. Show changes src/DataImporterClass.h +56 −0 Original line number Diff line number Diff line Loading @@ -56,6 +56,56 @@ namespace DataImporter_ns /*----- PROTECTED REGION END -----*/ // DataImporterClass::classes for dynamic creation //========================================= // Define classes for commands //========================================= // Command On class definition class OnClass : public Tango::Command { public: OnClass(const char *name, Tango::CmdArgType in, Tango::CmdArgType out, const char *in_desc, const char *out_desc, Tango::DispLevel level) :Command(name,in,out,in_desc,out_desc, level) {}; OnClass(const char *name, Tango::CmdArgType in, Tango::CmdArgType out) :Command(name,in,out) {}; ~OnClass() {}; virtual CORBA::Any *execute (Tango::DeviceImpl *dev, const CORBA::Any &any); virtual bool is_allowed (Tango::DeviceImpl *dev, const CORBA::Any &any) {return (static_cast<DataImporter *>(dev))->is_On_allowed(any);} }; // Command Off class definition class OffClass : public Tango::Command { public: OffClass(const char *name, Tango::CmdArgType in, Tango::CmdArgType out, const char *in_desc, const char *out_desc, Tango::DispLevel level) :Command(name,in,out,in_desc,out_desc, level) {}; OffClass(const char *name, Tango::CmdArgType in, Tango::CmdArgType out) :Command(name,in,out) {}; ~OffClass() {}; virtual CORBA::Any *execute (Tango::DeviceImpl *dev, const CORBA::Any &any); virtual bool is_allowed (Tango::DeviceImpl *dev, const CORBA::Any &any) {return (static_cast<DataImporter *>(dev))->is_Off_allowed(any);} }; /** * The DataImporterClass singleton definition */ Loading @@ -71,6 +121,12 @@ class DataImporterClass : public Tango::DeviceClass /*----- PROTECTED REGION END -----*/ // DataImporterClass::Additionnal DServer data members // Class properties data members public: // CertificateFile: Absolute path to certificate chain file string certificateFile; // StoragePath: Absolute path to storage string storagePath; public: // write class properties data members Tango::DbData cl_prop; Loading Loading
src/DataImporter.cpp +244 −1 Original line number Diff line number Diff line Loading @@ -57,6 +57,8 @@ //================================================================ // State | Inherited (no method) // Status | Inherited (no method) // On | on // Off | off //================================================================ //================================================================ Loading Loading @@ -137,7 +139,9 @@ void DataImporter::init_device() /*----- PROTECTED REGION END -----*/ // DataImporter::init_device_before // No device property to be read from database // Get the device properties from database get_device_property(); /*----- PROTECTED REGION ID(DataImporter::init_device) ENABLED START -----*/ Loading @@ -147,6 +151,213 @@ void DataImporter::init_device() /*----- PROTECTED REGION END -----*/ // DataImporter::init_device } //-------------------------------------------------------- /** * Method : DataImporter::get_device_property() * Description : Read database to initialize property data members. */ //-------------------------------------------------------- void DataImporter::get_device_property() { /*----- PROTECTED REGION ID(DataImporter::get_device_property_before) ENABLED START -----*/ // Initialize property data members /*----- PROTECTED REGION END -----*/ // DataImporter::get_device_property_before // Read device properties from database. Tango::DbData dev_prop; dev_prop.push_back(Tango::DbDatum("CertificateFile")); dev_prop.push_back(Tango::DbDatum("StoragePath")); dev_prop.push_back(Tango::DbDatum("RemoteHost")); dev_prop.push_back(Tango::DbDatum("RemotePort")); dev_prop.push_back(Tango::DbDatum("RemoteUsername")); dev_prop.push_back(Tango::DbDatum("RemotePassword")); dev_prop.push_back(Tango::DbDatum("EnableSSL")); dev_prop.push_back(Tango::DbDatum("DatabaseHost")); dev_prop.push_back(Tango::DbDatum("DatabasePort")); dev_prop.push_back(Tango::DbDatum("DatabaseUsername")); dev_prop.push_back(Tango::DbDatum("DatabasePassword")); dev_prop.push_back(Tango::DbDatum("DatabaseSchema")); dev_prop.push_back(Tango::DbDatum("DatabaseTable")); dev_prop.push_back(Tango::DbDatum("Timeout")); // is there at least one property to be read ? if (dev_prop.size()>0) { // Call database and extract values if (Tango::Util::instance()->_UseDb==true) get_db_device()->get_property(dev_prop); // get instance on DataImporterClass to get class property Tango::DbDatum def_prop, cl_prop; DataImporterClass *ds_class = (static_cast<DataImporterClass *>(get_device_class())); int i = -1; // Try to initialize CertificateFile from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> certificateFile; else { // Try to initialize CertificateFile from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> certificateFile; } // And try to extract CertificateFile value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> certificateFile; // Try to initialize StoragePath from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> storagePath; else { // Try to initialize StoragePath from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> storagePath; } // And try to extract StoragePath value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> storagePath; // Try to initialize RemoteHost from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> remoteHost; else { // Try to initialize RemoteHost from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> remoteHost; } // And try to extract RemoteHost value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> remoteHost; // Try to initialize RemotePort from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> remotePort; else { // Try to initialize RemotePort from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> remotePort; } // And try to extract RemotePort value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> remotePort; // Try to initialize RemoteUsername from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> remoteUsername; else { // Try to initialize RemoteUsername from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> remoteUsername; } // And try to extract RemoteUsername value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> remoteUsername; // Try to initialize RemotePassword from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> remotePassword; else { // Try to initialize RemotePassword from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> remotePassword; } // And try to extract RemotePassword value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> remotePassword; // Try to initialize EnableSSL from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> enableSSL; else { // Try to initialize EnableSSL from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> enableSSL; } // And try to extract EnableSSL value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> enableSSL; // Try to initialize DatabaseHost from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> databaseHost; else { // Try to initialize DatabaseHost from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> databaseHost; } // And try to extract DatabaseHost value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> databaseHost; // Try to initialize DatabasePort from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> databasePort; else { // Try to initialize DatabasePort from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> databasePort; } // And try to extract DatabasePort value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> databasePort; // Try to initialize DatabaseUsername from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> databaseUsername; else { // Try to initialize DatabaseUsername from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> databaseUsername; } // And try to extract DatabaseUsername value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> databaseUsername; // Try to initialize DatabasePassword from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> databasePassword; else { // Try to initialize DatabasePassword from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> databasePassword; } // And try to extract DatabasePassword value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> databasePassword; // Try to initialize DatabaseSchema from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> databaseSchema; else { // Try to initialize DatabaseSchema from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> databaseSchema; } // And try to extract DatabaseSchema value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> databaseSchema; // Try to initialize DatabaseTable from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> databaseTable; else { // Try to initialize DatabaseTable from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> databaseTable; } // And try to extract DatabaseTable value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> databaseTable; // Try to initialize Timeout from class property cl_prop = ds_class->get_class_property(dev_prop[++i].name); if (cl_prop.is_empty()==false) cl_prop >> timeout; else { // Try to initialize Timeout from default device value def_prop = ds_class->get_default_device_property(dev_prop[i].name); if (def_prop.is_empty()==false) def_prop >> timeout; } // And try to extract Timeout value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> timeout; } /*----- PROTECTED REGION ID(DataImporter::get_device_property_after) ENABLED START -----*/ // Check device property data members init /*----- PROTECTED REGION END -----*/ // DataImporter::get_device_property_after } //-------------------------------------------------------- /** Loading Loading @@ -197,6 +408,38 @@ void DataImporter::add_dynamic_attributes() /*----- PROTECTED REGION END -----*/ // DataImporter::add_dynamic_attributes } //-------------------------------------------------------- /** * Command On related method * Description: Activate data importer * */ //-------------------------------------------------------- void DataImporter::on() { DEBUG_STREAM << "DataImporter::On() - " << device_name << endl; /*----- PROTECTED REGION ID(DataImporter::on) ENABLED START -----*/ // Add your own code /*----- PROTECTED REGION END -----*/ // DataImporter::on } //-------------------------------------------------------- /** * Command Off related method * Description: Deactivate data importer * */ //-------------------------------------------------------- void DataImporter::off() { DEBUG_STREAM << "DataImporter::Off() - " << device_name << endl; /*----- PROTECTED REGION ID(DataImporter::off) ENABLED START -----*/ // Add your own code /*----- PROTECTED REGION END -----*/ // DataImporter::off } /*----- PROTECTED REGION ID(DataImporter::namespace_ending) ENABLED START -----*/ Loading
src/DataImporter.h +48 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,36 @@ class DataImporter : public TANGO_BASE_CLASS /*----- PROTECTED REGION END -----*/ // DataImporter::Data Members // Device property data members public: // CertificateFile: Absolute path to certificate chain file string certificateFile; // StoragePath: Absolute path to storage string storagePath; // RemoteHost: Metadata exporter remote host string remoteHost; // RemotePort: Metadata exporter remote port Tango::DevULong remotePort; // RemoteUsername: Metadata exporter login username string remoteUsername; // RemotePassword: Metadata exporter remote password string remotePassword; // EnableSSL: Enable or disable SSL connections Tango::DevBoolean enableSSL; // DatabaseHost: Metadata local database host string databaseHost; // DatabasePort: Metadata local database port Tango::DevULong databasePort; // DatabaseUsername: Metadata local database username string databaseUsername; // DatabasePassword: Metadata local database password string databasePassword; // DatabaseSchema: Metadata local database schema string databaseSchema; // DatabaseTable: Metadata local database table string databaseTable; // Timeout: Connection timeout (seconds) string timeout; // Constructors and destructors Loading Loading @@ -107,6 +137,10 @@ public: * Initialize the device */ virtual void init_device(); /* * Read the device properties from database */ void get_device_property(); /* * Always executed method before execution command method. */ Loading Loading @@ -136,6 +170,20 @@ public: // Command related methods public: /** * Command On related method * Description: Activate data importer * */ virtual void on(); virtual bool is_On_allowed(const CORBA::Any &any); /** * Command Off related method * Description: Deactivate data importer * */ virtual void off(); virtual bool is_Off_allowed(const CORBA::Any &any); /*----- PROTECTED REGION ID(DataImporter::Additional Method prototypes) ENABLED START -----*/ Loading
src/DataImporter.xmi +97 −1 Original line number Diff line number Diff line <?xml version="1.0" encoding="ASCII"?> <pogoDsl:PogoSystem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pogoDsl="http://www.esrf.fr/tango/pogo/PogoDsl"> <classes name="DataImporter" pogoRevision="8.1"> <description description="" title="Data importer" sourcePath="/home/mdm/workspace/nadir/data_importer/src" language="Cpp" filestogenerate="XMI file,Code files" license="GPL" hasMandatoryProperty="false" hasConcreteProperty="false" hasAbstractCommand="false" hasAbstractAttribute="false"> <description description="" title="Data importer" sourcePath="/home/mdm/workspace/nadir/data_importer/src" language="Cpp" filestogenerate="XMI file,Code files" license="GPL" hasMandatoryProperty="false" hasConcreteProperty="true" hasAbstractCommand="false" hasAbstractAttribute="false"> <inheritances classname="Device_Impl" sourcePath=""/> <identification contact="at oats.inaf.it - demarco" author="demarco" emailDomain="oats.inaf.it" classFamily="Communication" siteSpecific="" platform="Unix Like" bus="TCP/UDP" manufacturer="none" reference=""/> </description> <classProperties name="CertificateFile" description="Absolute path to certificate chain file"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </classProperties> <classProperties name="StoragePath" description="Absolute path to storage"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </classProperties> <deviceProperties name="CertificateFile" description="Absolute path to certificate chain file"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="StoragePath" description="Absolute path to storage"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="RemoteHost" description="Metadata exporter remote host"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="RemotePort" description="Metadata exporter remote port"> <type xsi:type="pogoDsl:UIntType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="RemoteUsername" description="Metadata exporter login username"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="RemotePassword" description="Metadata exporter remote password"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="EnableSSL" description="Enable or disable SSL connections"> <type xsi:type="pogoDsl:BooleanType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="DatabaseHost" description="Metadata local database host"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="DatabasePort" description="Metadata local database port"> <type xsi:type="pogoDsl:UIntType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="DatabaseUsername" description="Metadata local database username"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="DatabasePassword" description="Metadata local database password"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="DatabaseSchema" description="Metadata local database schema"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="DatabaseTable" description="Metadata local database table"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </deviceProperties> <deviceProperties name="Timeout" description="Connection timeout (seconds)"> <type xsi:type="pogoDsl:StringType"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> <DefaultPropValue>60</DefaultPropValue> </deviceProperties> <commands name="State" description="This command gets the device state (stored in its device_state data member) and returns it to the caller." execMethod="dev_state" displayLevel="OPERATOR" polledPeriod="0"> <argin description="none"> <type xsi:type="pogoDsl:VoidType"/> Loading @@ -23,6 +88,37 @@ </argout> <status abstract="true" inherited="true" concrete="true"/> </commands> <commands name="On" description="Activate data importer" execMethod="on" displayLevel="OPERATOR" polledPeriod="0"> <argin description=""> <type xsi:type="pogoDsl:VoidType"/> </argin> <argout description=""> <type xsi:type="pogoDsl:VoidType"/> </argout> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> <excludedStates>ON</excludedStates> <excludedStates>FAULT</excludedStates> </commands> <commands name="Off" description="Deactivate data importer" execMethod="off" displayLevel="OPERATOR" polledPeriod="0"> <argin description=""> <type xsi:type="pogoDsl:VoidType"/> </argin> <argout description=""> <type xsi:type="pogoDsl:VoidType"/> </argout> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> <excludedStates>OFF</excludedStates> <excludedStates>FAULT</excludedStates> </commands> <states name="ON" description="Data exporter is in ON state (ready for file transfer)"> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </states> <states name="OFF" description="Data exporter is in OFF state (not ready for file transfer)"> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </states> <states name="FAULT" description="Data exporter is in FAULT state (an error occurred)"> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </states> <preferences docHome="./doc_html" makefileHome="/usr/local/tango-8.1.2/share/pogo/preferences"/> </classes> </pogoDsl:PogoSystem>
src/DataImporterClass.cpp +318 −0 File changed.Preview size limit exceeded, changes collapsed. Show changes
src/DataImporterClass.h +56 −0 Original line number Diff line number Diff line Loading @@ -56,6 +56,56 @@ namespace DataImporter_ns /*----- PROTECTED REGION END -----*/ // DataImporterClass::classes for dynamic creation //========================================= // Define classes for commands //========================================= // Command On class definition class OnClass : public Tango::Command { public: OnClass(const char *name, Tango::CmdArgType in, Tango::CmdArgType out, const char *in_desc, const char *out_desc, Tango::DispLevel level) :Command(name,in,out,in_desc,out_desc, level) {}; OnClass(const char *name, Tango::CmdArgType in, Tango::CmdArgType out) :Command(name,in,out) {}; ~OnClass() {}; virtual CORBA::Any *execute (Tango::DeviceImpl *dev, const CORBA::Any &any); virtual bool is_allowed (Tango::DeviceImpl *dev, const CORBA::Any &any) {return (static_cast<DataImporter *>(dev))->is_On_allowed(any);} }; // Command Off class definition class OffClass : public Tango::Command { public: OffClass(const char *name, Tango::CmdArgType in, Tango::CmdArgType out, const char *in_desc, const char *out_desc, Tango::DispLevel level) :Command(name,in,out,in_desc,out_desc, level) {}; OffClass(const char *name, Tango::CmdArgType in, Tango::CmdArgType out) :Command(name,in,out) {}; ~OffClass() {}; virtual CORBA::Any *execute (Tango::DeviceImpl *dev, const CORBA::Any &any); virtual bool is_allowed (Tango::DeviceImpl *dev, const CORBA::Any &any) {return (static_cast<DataImporter *>(dev))->is_Off_allowed(any);} }; /** * The DataImporterClass singleton definition */ Loading @@ -71,6 +121,12 @@ class DataImporterClass : public Tango::DeviceClass /*----- PROTECTED REGION END -----*/ // DataImporterClass::Additionnal DServer data members // Class properties data members public: // CertificateFile: Absolute path to certificate chain file string certificateFile; // StoragePath: Absolute path to storage string storagePath; public: // write class properties data members Tango::DbData cl_prop; Loading