//-------------------------------------------------------- /** * Method : SubSystem_DS::add_dynamic_attributes() * Description : Create the dynamic attributes if any * for specified device. */ //-------------------------------------------------------- void SubSystem_DS::add_dynamic_attributes() { // Example to add dynamic attribute: // add_dsBoolean_dynamic_attribute("MydsBooleanAttribute"); // add_dsFloat_dynamic_attribute("MydsFloatAttribute"); // add_dsLong_dynamic_attribute("MydsLongAttribute"); // add_dsLong64_dynamic_attribute("MydsLong64Attribute"); // add_dsShort_dynamic_attribute("MydsShortAttribute"); // add_dsString_dynamic_attribute("MydsStringAttribute"); // add_dsUchar_dynamic_attribute("MydsUcharAttribute"); // add_dsUlong_dynamic_attribute("MydsUlongAttribute"); // add_dsUlong64_dynamic_attribute("MydsUlong64Attribute"); // add_dsUshort_dynamic_attribute("MydsUshortAttribute"); /*----- PROTECTED REGION ID(SubSystem_DS::add_dynamic_attributes) ENABLED START -----*/ // Add your own code to create and add dynamic attributes if any //cout << "Dynamic Attributes!\n"; /******************************************************************************/ /**** Retreiving attribute list from database ***/ /******************************************************************************/ sleep(2); query = "select attribute, AttributeIndex, AttributeDatatype from property_attribute_device where device = '" + deviceName + "' and subSystemId = '" + subSystemName + "'"; objMySql->send_query( query ); if (objMySql->DbRow == 0){ cout << "List of dynamic attributes are not present in database" << endl; gmrt.errorCode = 31; sequence = "0"; code = "11"; event = "12"; writeResponse(); } unsigned int row_count = 0 , failed_attr_count = 0; while (row_count < objMySql->DbRow){ AttributeName[row_count] = objMySql->DbDataValue[row_count][0]; AttributeIndex[row_count] = atoi( objMySql->DbDataValue[row_count][1] ); AttributeDataType[row_count] = objMySql->DbDataValue[row_count][2]; transform( AttributeDataType[row_count].begin(), AttributeDataType[row_count].end(), AttributeDataType[row_count].begin(), ::tolower); if( ! create_dynamic_attribute( AttributeName[row_count] , AttributeDataType[row_count] ) ) failed_attr_count++; row_count++; } AttributeNumber = objMySql->DbRow; //cout << "\n*********************************************************\n"; //cout << "\n\t" << row_count - failed_attr_count <<" attributes created successfully !\n"; //cout << "\t\t"<< failed_attr_count << " failed to create\n"; //cout << "\n*********************************************************\n"; /******************************************************************************/ objMySql->freeResultSet(); /*----- PROTECTED REGION END -----*/ // SubSystem_DS::add_dynamic_attributes } // Additional Methods bool SubSystem_DS::create_dynamic_attribute( string name, string datatype ){ /**************************************************************************/ /********* Create Dynamic Attribute ***********/ /**************************************************************************/ if (datatype == "string") add_dsString_dynamic_attribute(name); else if (datatype == "short") add_dsShort_dynamic_attribute(name); else if (datatype == "float") add_dsFloat_dynamic_attribute(name); else if (datatype == "boolean") add_dsBoolean_dynamic_attribute(name); else if (datatype == "long") add_dsLong_dynamic_attribute(name); else if (datatype == "long64") add_dsLong64_dynamic_attribute(name); else if (datatype == "uchar") add_dsUchar_dynamic_attribute(name); else if (datatype == "ushort") add_dsUshort_dynamic_attribute(name); else if (datatype == "ulong") add_dsUlong_dynamic_attribute(name); else if (datatype == "ulong64") add_dsUlong64_dynamic_attribute(name); else{ //cout << "[ Invalid Datatype ] \t Name :- " << name << endl; return false; } return true; }