Esempio n. 1
0
bool BCLComponentNameGreater::operator()(const BCLComponent& a, const BCLComponent& b) const
{
  std::string aname;
  boost::optional<std::string> oaname = a.name();
  if (oaname){
    aname = *oaname;
  }
  std::string bname;
  boost::optional<std::string> obname = b.name();
  if (obname){
    bname = *obname;
  }
  return istringLess(bname, aname);
}
Esempio n. 2
0
  bool LocalBCL::addComponent(BCLComponent& component)
  {
    QSqlQuery query(*m_qSqlDatabase);
    //Check for uid
    if (!component.uid().empty() && !component.versionId().empty())
    {
      if (!query.exec(QString("DELETE FROM Components WHERE uid='%1' AND version_id='%2'").arg(
        escape(component.uid()), escape(component.versionId()))))
        return false;

      if (!query.exec(QString("INSERT INTO Components (uid, version_id, name, description, "
        "date_added, date_modified) VALUES('%1', '%2', '%3', '%4', %5, %6)").arg(
        escape(component.uid()), escape(component.versionId()), escape(component.name()),
        escape(component.description()), "datetime('now','localtime')", "datetime('now','localtime')")))
        return false;

      //Insert files
      if (!query.exec(QString("DELETE FROM Files WHERE uid='%1' AND version_id='%2'").arg(
          escape(component.uid()), escape(component.versionId()))))
          return false;
      if (!component.files().empty())
      {
        for (int i=0; i < (int) component.files().size(); i++)
        {
          if (!query.exec(QString("INSERT INTO Files (uid, version_id, filename, filetype) "
            "VALUES('%1', '%2', '%3', '%4')").arg(escape(component.uid()), escape(component.versionId()),
            escape(component.files()[i]), escape(component.filetypes()[i]))))
            return false;
        }
      }
      //Insert attributes
      if (!query.exec(QString("DELETE FROM Attributes WHERE uid='%1' AND version_id='%2'").arg(
          escape(component.uid()), escape(component.versionId()))))
          return false;
      if (!component.attributes().empty())
      {
        Q_FOREACH(const Attribute& attribute, component.attributes())
        {
          std::string dataValue, dataType;
          if (attribute.valueType().value() == AttributeValueType::Boolean) {
            dataValue = boost::lexical_cast<std::string>(attribute.valueAsBoolean());
            dataType = "boolean";
          } else if (attribute.valueType().value() == AttributeValueType::Integer) {
            dataValue = boost::lexical_cast<std::string>(attribute.valueAsInteger());
            dataType = "int";
          } else if (attribute.valueType().value() == AttributeValueType::Double) {
            dataValue = formatString(attribute.valueAsDouble());
            dataType = "float";
          } else {
            dataValue = attribute.valueAsString();
            dataType = "string";
          }

          if (!query.exec(QString("INSERT INTO Attributes (uid, version_id, name, value, units, type) "
            "VALUES('%1', '%2', '%3', '%4', '%5', '%6')").arg(escape(component.uid()), escape(component.versionId()),
            escape(attribute.name()), escape(dataValue), escape(attribute.units() ? attribute.units().get() : ""),
            escape(dataType))))
            return false;
        }
      }
      return true;
    }