def buildQuerySingleString()

in s2core/src/main/scala/org/apache/s2graph/core/index/IndexProvider.scala [65:101]


  def buildQuerySingleString(container: HasContainer): String = {
    import scala.collection.JavaConversions._

    val key = if (container.getKey == T.label.getAccessor) labelField else container.getKey
    val value = container.getValue

    container.getPredicate match {
      case and: AndP[_] =>
        val buffer = scala.collection.mutable.ArrayBuffer.empty[String]
        and.getPredicates.foreach { p =>
          buffer.append(buildQuerySingleString(new HasContainer(container.getKey, p)))
        }
        buffer.mkString("(", " AND ", ")")
      case or: OrP[_] =>
        val buffer = scala.collection.mutable.ArrayBuffer.empty[String]
        or.getPredicates.foreach { p =>
          buffer.append(buildQuerySingleString(new HasContainer(container.getKey, p)))
        }
        buffer.mkString("(", " OR ", ")")
      case _ =>
        val biPredicate = container.getBiPredicate
        biPredicate match {

          case Contains.within =>
            key + ":(" + value.asInstanceOf[util.Collection[_]].toSeq.mkString(" OR ") + ")"
          case Contains.without =>
            "NOT " + key + ":(" + value.asInstanceOf[util.Collection[_]].toSeq.mkString(" AND ") + ")"
          case Compare.eq => s"${key}:${value}"
          case Compare.gt => s"(${key}:[${value} TO *] AND NOT ${key}:${value})"
          case Compare.gte => s"${key}:[${value} TO *]"
          case Compare.lt => s"${key}:[* TO ${value}]"
          case Compare.lte => s"(${key}:[* TO ${value}] OR ${key}:${value})"
          case Compare.neq => s"NOT ${key}:${value}"
          case _ => throw new IllegalArgumentException("not supported yet.")
        }
    }
  }