std::string CCMSDIntegrator::GenerateTableData(std::string schema) 
{
	std::stringstream buffer;
	std::string table;
	std::string properties;
	buffer << "USE "<< schema << ";"  << std::endl ;
	schema="`"+schema+"`";
	
	std::vector<std::vector<IObjectPtr> *> & allobjects = IObject::GetAllObjects();
	for(int j=0; j<allobjects.size(); j++)
	{
		std::vector<IObjectPtr> * objects = allobjects[j];
		for(int k=0; k< objects->size(); k++)
		{
			IObject * apart = objects->at(k).get();
			table=apart->GetClassname(); // "`Part`";

			buffer << "INSERT INTO " << schema << "." << table << " VALUES (" ;
			//	'7060',-6,0,0,0,0
			std::vector<std::string> fields = apart->GetHeaders();
			for(int jj=0; jj< fields.size(); jj++)
			{
				std::string value = GetDDLValue(apart, jj, properties) ; //apart->GetValue(jj);
				buffer << value;
				if((jj+1)!=fields.size()) buffer <<  "," ;
			}
			buffer << ");" << std::endl;
		}
	}

	buffer << std::endl << std::endl << properties;
	return buffer.str();
}
std::string CCMSDIntegrator::GenerateSchema(std::string schema) 
{
	std::stringstream buffer;
	std::string table;
	buffer << "CREATE SCHEMA IF NOT EXISTS `" << schema << "` DEFAULT CHARACTER SET latin1;"  << std::endl;
	buffer << "USE "<< schema << ";"  << std::endl ;
	schema="`"+schema+"`";
	
	buffer << std::endl <<   std::endl ;
	buffer << "DROP TABLE IF EXISTS " << schema << "." << "Properties" <<  ";" << std::endl;
	buffer << "CREATE  TABLE IF NOT EXISTS " << schema << "." << "Properties" << "(" << std::endl;
	buffer << "identifier  CHAR(255) NOT NULL,";
	buffer << "name CHAR(255)  NOT NULL DEFAULT '',";
	buffer << "value NOT NULL DEFAULT '', ";
	buffer << "units CHAR(255) NULL DEFAULT '',";
	buffer << "description NULL DEFAULT '',";
	buffer <<  std::endl << "PRIMARY KEY (`identifier`)" << std::endl;
	buffer << ") ENGINE=InnoDB DEFAULT CHARSET=utf8;" << std::endl;

	std::vector<IObject::CreatorFcn> & creators = IObject::GetAllCreators();
	for(int j=0; j< creators.size(); j++)
	{
		IObject::CreatorFcn fcn = creators[j];
		//Part * apart = (Part*) new Part();
		IObject * apart = fcn();
		table=apart->GetClassname(); // "`Part`";

		buffer << std::endl << std::endl;
		buffer << "-- -----------------------------------------------------" << std::endl;
		buffer << "-- Table " <<  schema << "." << table << std::endl;
		buffer << "-- -----------------------------------------------------" << std::endl;

		buffer << "DROP TABLE IF EXISTS "<< schema << "." << table <<  ";" << std::endl;
		buffer << "CREATE  TABLE IF NOT EXISTS "<< schema << "." << table << "(" << std::endl;

		std::vector<std::string> fields = apart->GetHeaders();
		for(int i=0; i< fields.size(); i++)
		{
			MetaType type = apart->GetType(i);
			std::string field = fields[i];
			ReplaceAll(field,".", "_");
			buffer << "`" << field << "` " << GetDDLType(type ) << " " ;
			buffer << (( fields[i]=="identifier")?  "NOT NULL " :  "NULL ");
			buffer << GetDDLDefault(type );
			if((i+1)!=fields.size()) buffer <<  ", " << std::endl;
		}

		if(std::find(fields.begin(), fields.end(), "identifier")!=fields.end())
			buffer <<  ", " << std::endl << "PRIMARY KEY (`identifier`)" << std::endl;


		buffer << ") ENGINE=InnoDB DEFAULT CHARSET=utf8;" << std::endl;
	}
	return buffer.str();
}