Skip to content
Snippets Groups Projects
Commit e8c33c7a authored by Marco De Marco's avatar Marco De Marco
Browse files

Ignore columns list added, to be tested

parent c0786b1d
No related branches found
No related tags found
No related merge requests found
...@@ -33,15 +33,16 @@ protected: ...@@ -33,15 +33,16 @@ protected:
unsigned int localPort, unsigned int workerNumber, unsigned int localPort, unsigned int workerNumber,
std::string databaseHost, unsigned int databasePort, std::string databaseHost, unsigned int databasePort,
std::string databaseUsername, std::string databasePassword, std::string databaseUsername, std::string databasePassword,
unsigned int databaseConnectionNumber, ExportedTablesMap exportedTablesMap, unsigned int databaseConnectionNumber, std::vector<std::string>& ignoreColumns,
AuthorisedUsersMap authorisedUsersMap) : ExportedTablesMap& exportedTablesMap, AuthorisedUsersMap& authorisedUsersMap) :
m_certificateFile(certificateFile), m_privateKeyFile(privateKeyFile), m_certificateFile(certificateFile), m_privateKeyFile(privateKeyFile),
m_dHTempFile(dHTempFile), m_localHost(localHost), m_dHTempFile(dHTempFile), m_localHost(localHost),
m_localPort(localPort), m_workerNumber(workerNumber), m_localPort(localPort), m_workerNumber(workerNumber),
m_databaseHost(databaseHost), m_databasePort(databasePort), m_databaseHost(databaseHost), m_databasePort(databasePort),
m_databaseUsername(databaseUsername), m_databasePassword(databasePassword), m_databaseUsername(databaseUsername), m_databasePassword(databasePassword),
m_databaseConnectionNumber(databaseConnectionNumber), m_databaseConnectionNumber(databaseConnectionNumber),
m_exportedTablesMap(exportedTablesMap), m_authorisedUsersMap(authorisedUsersMap) {} m_ignoreColumnList(ignoreColumns),m_exportedTablesMap(exportedTablesMap),
m_authorisedUsersMap(authorisedUsersMap) {}
virtual ~Configuration() {} virtual ~Configuration() {}
...@@ -58,17 +59,18 @@ public: ...@@ -58,17 +59,18 @@ public:
// [Public] Create class method // [Public] Create class method
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
static Configuration::SP create(std::string certificateFile, static Configuration::SP create(std::string certificateFile,
std::string privateKeyFile, std::string dHTempFile, std::string privateKeyFile, std::string dHTempFile, std::string localHost,
std::string localHost, unsigned int localPort, unsigned int localPort, unsigned int workerNumber, std::string databaseHost,
unsigned int workerNumber, std::string databaseHost,
unsigned int databasePort, std::string databaseUsername, unsigned int databasePort, std::string databaseUsername,
std::string databasePassword, unsigned int databaseConnectionNumber, std::string databasePassword, unsigned int databaseConnectionNumber,
ExportedTablesMap exportedTablesMap, AuthorisedUsersMap authorisedUsersMap) std::vector<std::string>& ignoreColumns, ExportedTablesMap& exportedTablesMap,
AuthorisedUsersMap& authorisedUsersMap)
{ {
Configuration::SP c_sp(new Configuration(certificateFile, privateKeyFile, Configuration::SP c_sp(new Configuration(certificateFile, privateKeyFile,
dHTempFile, localHost, localPort, workerNumber, databaseHost, dHTempFile, localHost, localPort, workerNumber, databaseHost,
databasePort, databaseUsername, databasePassword, databaseConnectionNumber, databasePort, databaseUsername, databasePassword,
exportedTablesMap, authorisedUsersMap), Configuration::Deleter()); databaseConnectionNumber, ignoreColumns, exportedTablesMap,
authorisedUsersMap), Configuration::Deleter());
return c_sp; return c_sp;
} }
...@@ -87,9 +89,6 @@ public: ...@@ -87,9 +89,6 @@ public:
std::string getDatabaseUsername() const { return m_databaseUsername; } std::string getDatabaseUsername() const { return m_databaseUsername; }
std::string getDatabasePassword() const { return m_databasePassword; } std::string getDatabasePassword() const { return m_databasePassword; }
unsigned int getDatabaseConnectionNumber() const { return m_databaseConnectionNumber; } unsigned int getDatabaseConnectionNumber() const { return m_databaseConnectionNumber; }
ExportedTablesMap& getExportedTablesMap() const { return m_exportedTablesMap; }
AuthorisedUsersMap& getAuthorisedUsersMap() const { return m_authorisedUsersMap; }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// [Public] Utilities methods // [Public] Utilities methods
...@@ -122,6 +121,17 @@ public: ...@@ -122,6 +121,17 @@ public:
return false; return false;
} }
bool isColumnIgnored(const std::string columnName)
{
std::vector<std::string>::const_iterator it;
for(it=m_ignoreColumnList.begin(); it!=m_ignoreColumnList.end(); ++it)
if(it->compare(columnName)==0)
return true;
return false;
}
protected: protected:
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// [Private] class variables // [Private] class variables
...@@ -159,6 +169,9 @@ protected: ...@@ -159,6 +169,9 @@ protected:
//Metadata database connections number //Metadata database connections number
const unsigned int m_databaseConnectionNumber; const unsigned int m_databaseConnectionNumber;
//Metadata ignored columns vector
const std::vector<std::string> m_ignoreColumnList;
//Exported tables multi map [schema table] //Exported tables multi map [schema table]
ExportedTablesMap m_exportedTablesMap; ExportedTablesMap m_exportedTablesMap;
......
...@@ -163,7 +163,7 @@ void MetadataExporter::init_device() ...@@ -163,7 +163,7 @@ void MetadataExporter::init_device()
//Start device if auto start enabled //Start device if auto start enabled
if(autoStart) if(autoStart)
{ {
INFO_STREAM << "FitsImporter::init_device() auto start enabled " << endl; INFO_STREAM << "MetadataExporter::init_device() auto start enabled " << endl;
on(); on();
} }
} }
...@@ -220,6 +220,7 @@ void MetadataExporter::get_device_property() ...@@ -220,6 +220,7 @@ void MetadataExporter::get_device_property()
dev_prop.push_back(Tango::DbDatum("ExportedTables")); dev_prop.push_back(Tango::DbDatum("ExportedTables"));
dev_prop.push_back(Tango::DbDatum("AuthorisedUsers")); dev_prop.push_back(Tango::DbDatum("AuthorisedUsers"));
dev_prop.push_back(Tango::DbDatum("AutoStart")); dev_prop.push_back(Tango::DbDatum("AutoStart"));
dev_prop.push_back(Tango::DbDatum("IgnoreColumns"));
// is there at least one property to be read ? // is there at least one property to be read ?
if (dev_prop.size()>0) if (dev_prop.size()>0)
...@@ -399,6 +400,17 @@ void MetadataExporter::get_device_property() ...@@ -399,6 +400,17 @@ void MetadataExporter::get_device_property()
// And try to extract AutoStart value from database // And try to extract AutoStart value from database
if (dev_prop[i].is_empty()==false) dev_prop[i] >> autoStart; if (dev_prop[i].is_empty()==false) dev_prop[i] >> autoStart;
// Try to initialize IgnoreColumns from class property
cl_prop = ds_class->get_class_property(dev_prop[++i].name);
if (cl_prop.is_empty()==false) cl_prop >> ignoreColumns;
else {
// Try to initialize IgnoreColumns from default device value
def_prop = ds_class->get_default_device_property(dev_prop[i].name);
if (def_prop.is_empty()==false) def_prop >> ignoreColumns;
}
// And try to extract IgnoreColumns value from database
if (dev_prop[i].is_empty()==false) dev_prop[i] >> ignoreColumns;
} }
/*----- PROTECTED REGION ID(MetadataExporter::get_device_property_after) ENABLED START -----*/ /*----- PROTECTED REGION ID(MetadataExporter::get_device_property_after) ENABLED START -----*/
...@@ -457,10 +469,36 @@ void MetadataExporter::get_device_property() ...@@ -457,10 +469,36 @@ void MetadataExporter::get_device_property()
importAuthorisedUsers(authorisedUsers, authorisedUsersMap); importAuthorisedUsers(authorisedUsers, authorisedUsersMap);
m_configuration_sp = Configuration::create(certificateFile, for(std::vector<std::string>::size_type i=0; i<ignoreColumns.size(); ++i)
privateKeyFile, dHTempFile, localHost, localPort, workerNumber, {
databaseHost, databasePort, databaseUsername, databasePassword, std::string ignoreColumn = ignoreColumns.at(i);
databaseConnectionNumber, exportedTablesMap, authorisedUsersMap);
if(ignoreColumn.empty())
{
stringstream event_list_error;
event_list_error << "IgnoreColumns property has an empty element"
<< " at \"" << i << "\" position" << endl;
throw(invalid_argument(event_list_error.str()));
}
if(ignoreColumn.compare("id")==0 ||
ignoreColumn.compare("storage_path")==0 ||
ignoreColumn.compare("file_path")==0 ||
ignoreColumn.compare("file_version")==0 ||
ignoreColumn.compare("file_name")==0 ||
ignoreColumn.compare("update_time")==0)
{
stringstream event_list_error;
event_list_error << "IgnoreColumns property has an invalid element"
<< " at \"" << i << "\" position" << endl;
throw(invalid_argument(event_list_error.str()));
}
}
m_configuration_sp = Configuration::create(certificateFile, privateKeyFile,
dHTempFile, localHost, localPort, workerNumber, databaseHost,
databasePort, databaseUsername, databasePassword, databaseConnectionNumber,
ignoreColumns, exportedTablesMap, authorisedUsersMap);
} }
catch(invalid_argument& ex) catch(invalid_argument& ex)
{ {
...@@ -481,7 +519,7 @@ void MetadataExporter::get_device_property() ...@@ -481,7 +519,7 @@ void MetadataExporter::get_device_property()
//-------------------------------------------------------- //--------------------------------------------------------
void MetadataExporter::always_executed_hook() void MetadataExporter::always_executed_hook()
{ {
DEBUG_STREAM << "MetadataExporter::always_executed_hook() " << device_name << endl; INFO_STREAM << "MetadataExporter::always_executed_hook() " << device_name << endl;
/*----- PROTECTED REGION ID(MetadataExporter::always_executed_hook) ENABLED START -----*/ /*----- PROTECTED REGION ID(MetadataExporter::always_executed_hook) ENABLED START -----*/
if(get_state() != Tango::FAULT) if(get_state() != Tango::FAULT)
......
...@@ -123,6 +123,10 @@ public: ...@@ -123,6 +123,10 @@ public:
vector<string> authorisedUsers; vector<string> authorisedUsers;
// AutoStart: Exec On command after init if state is not fault // AutoStart: Exec On command after init if state is not fault
Tango::DevBoolean autoStart; Tango::DevBoolean autoStart;
// IgnoreColumns: Array of metadata columns that will not be exported.
// Mandatory column are:
// [id, storage_path, file_path, file_version, file_name, update_time]
vector<string> ignoreColumns;
// Constructors and destructors // Constructors and destructors
......
...@@ -89,6 +89,10 @@ ...@@ -89,6 +89,10 @@
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<DefaultPropValue>false</DefaultPropValue> <DefaultPropValue>false</DefaultPropValue>
</deviceProperties> </deviceProperties>
<deviceProperties name="IgnoreColumns" description="Array of metadata columns that will not be exported.&#xA;Mandatory column are:&#xA;[id, storage_path, file_path, file_version, file_name, update_time]">
<type xsi:type="pogoDsl:StringVectorType"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
</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"> <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"> <argin description="none">
<type xsi:type="pogoDsl:VoidType"/> <type xsi:type="pogoDsl:VoidType"/>
......
...@@ -620,6 +620,19 @@ void MetadataExporterClass::set_default_property() ...@@ -620,6 +620,19 @@ void MetadataExporterClass::set_default_property()
} }
else else
add_wiz_dev_prop(prop_name, prop_desc); add_wiz_dev_prop(prop_name, prop_desc);
prop_name = "IgnoreColumns";
prop_desc = "Array of metadata columns that will not be exported.\nMandatory column are:\n[id, storage_path, file_path, file_version, file_name, update_time]";
prop_def = "";
vect_data.clear();
if (prop_def.length()>0)
{
Tango::DbDatum data(prop_name);
data << vect_data ;
dev_def_prop.push_back(data);
add_wiz_dev_prop(prop_name, prop_desc, prop_def);
}
else
add_wiz_dev_prop(prop_name, prop_desc);
} }
//-------------------------------------------------------- //--------------------------------------------------------
......
...@@ -449,7 +449,8 @@ void ProtocolManager::fillRow(Response::Metadata::Row* row) ...@@ -449,7 +449,8 @@ void ProtocolManager::fillRow(Response::Metadata::Row* row)
if(name.compare("id")==0 || if(name.compare("id")==0 ||
name.compare("storage_path")==0 || name.compare("storage_path")==0 ||
name.compare("file_path")==0) name.compare("file_path")==0 ||
m_configuration_sp->isColumnIgnored(name))
{ {
#ifdef VERBOSE_DEBUG #ifdef VERBOSE_DEBUG
INFO_STREAM << "ProtocolManager::fillRow() skipping " << name << endl; INFO_STREAM << "ProtocolManager::fillRow() skipping " << name << endl;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment