コード例 #1
0
 /**
  * Returns true if e1, e2 is in the correct ordering for matching. This does a few things:
  *
  *  - Avoid comparing e1 to e2 and e2 to e1
  *  - The Unknown1/Input1 is always e1. This is a requirement for some of the older code.
  *  - Gives a consistent ordering to allow backwards compatibility with system tests.
  */
 bool isCorrectOrder(const ConstElementPtr& e1, const ConstElementPtr& e2)
 {
   if (e1->getStatus().getEnum() == e2->getStatus().getEnum())
   {
     return e1->getElementId() < e2->getElementId();
   }
   else
   {
     return e1->getStatus().getEnum() < e2->getStatus().getEnum();
   }
 }
コード例 #2
0
 static bool isRelated(ConstElementPtr e1, ConstElementPtr e2)
 {
   if (e1->getStatus() != e2->getStatus() &&
       e1->isUnknown() && e2->isUnknown() &&
       OsmSchema::getInstance().isBuilding(e1->getTags(), e1->getElementType()) &&
       OsmSchema::getInstance().isBuilding(e2->getTags(), e2->getElementType()))
   {
     return true;
   }
   else
   {
     return false;
   }
 }
コード例 #3
0
 virtual void visit(const ConstElementPtr& e)
 {
   if (e->getStatus() == _matchStatus && isMatchCandidate(e))
   {
     checkForMatch(e);
   }
 }
コード例 #4
0
void OsmApiDbSqlChangesetFileWriter::_createTags(ConstElementPtr element)
{
  LOG_TRACE("Creating tags for: " << element->getElementId());

  QStringList tableNames = _tagTableNamesForElement(element->getElementId());

  Tags tags = element->getTags();
  if (_includeDebugTags)
  {
    tags.set(MetadataTags::HootStatus(), QString::number(element->getStatus().getEnum()));
  }
  LOG_VART(tags);
  if (element->getElementType().getEnum() == ElementType::Relation && !tags.contains("type"))
  {
    ConstRelationPtr tmp = boost::dynamic_pointer_cast<const Relation>(element);
    tags.appendValue("type", tmp->getType());
  }

  for (Tags::const_iterator it = tags.begin(); it != tags.end(); ++it)
  {
    QString k = it.key();
    QString v = it.value();

    if (k != MetadataTags::HootHash())
    {
      const QString currentTagValues =
      QString("(%1_id, k, v) VALUES (%2, '%3', '%4');\n")
        .arg(element->getElementId().getType().toString().toLower())
        .arg(element->getElementId().getId())
        .arg(k.replace('\'', "''"))
        .arg(v.replace('\'', "''"));

      const QString tagValues =
        QString("(%1_id, k, v, version) VALUES (%2, '%3', '%4', %5);\n")
          .arg(element->getElementId().getType().toString().toLower())
          .arg(element->getElementId().getId())
          .arg(k.replace('\'', "''"))
          .arg(v.replace('\'', "''"))
          .arg(element->getVersion());

      _outputSql.write(
        (QString("INSERT INTO %1 ").arg(tableNames.at(0)) + currentTagValues).toUtf8());
      _outputSql.write((QString("INSERT INTO %1 ").arg(tableNames.at(1)) + tagValues).toUtf8());
    }
  }
}