Skip to content

Commit

Permalink
Imps: 1. rename Queries to DomToH2Queries
Browse files Browse the repository at this point in the history
  • Loading branch information
platonai committed Jul 11, 2024
1 parent 4730d66 commit 8cb1792
Show file tree
Hide file tree
Showing 7 changed files with 72 additions and 60 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ import kotlin.math.roundToInt
import kotlin.reflect.full.memberProperties
import kotlin.reflect.full.primaryConstructor

object Queries {
object DomToH2Queries {
private val logger = getLogger(this::class)

/**
Expand Down Expand Up @@ -205,11 +205,24 @@ object Queries {
}

fun <O> selectFirstOrNull(dom: ValueDom, cssQuery: String, transformer: (Element) -> O): O? {
return dom.element.selectFirstOrNull(cssQuery, transformer)
val result = dom.element.selectFirstOrNull(cssQuery, transformer)
if (result != null && result is Element) {
// feature: mark element matching query
// select first element matched
// result.attr("sf-match")
}
return result
}

fun <O> selectNthOrNull(dom: ValueDom, cssQuery: String, n: Int, transform: (Element) -> O): O? {
return dom.element.select(cssQuery, n, 1) { transform(it) }.firstOrNull()
val result = dom.element.select(cssQuery, n, 1).firstOrNull()
if (result != null) {
// feature: mark element matching query
// select n-th element matched
// result.attr("sn-match")
return transform(result)
}
return null
}

fun getTexts(ele: Element, restrictCss: String, offset: Int, limit: Int): Collection<String> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ import ai.platon.pulsar.ql.ResultSets
import ai.platon.pulsar.ql.annotation.UDFGroup
import ai.platon.pulsar.ql.annotation.UDFunction
import ai.platon.pulsar.ql.h2.H2SessionFactory
import ai.platon.pulsar.ql.h2.Queries
import ai.platon.pulsar.ql.h2.Queries.toResultSet
import ai.platon.pulsar.ql.h2.DomToH2Queries
import ai.platon.pulsar.ql.h2.DomToH2Queries.toResultSet
import ai.platon.pulsar.ql.h2.domValue
import ai.platon.pulsar.ql.types.ValueDom
import ai.platon.pulsar.ql.annotation.H2Context
import ai.platon.pulsar.ql.h2.Queries.toDOMResultSet
import ai.platon.pulsar.ql.h2.DomToH2Queries.toDOMResultSet
import org.h2.jdbc.JdbcConnection
import org.h2.tools.SimpleResultSet
import org.h2.value.DataType
Expand Down Expand Up @@ -46,7 +46,7 @@ object DomFunctionTables {
return toResultSet("DOM", listOf<ValueDom>())
}

val pages = Queries.loadAll(session, urls)
val pages = DomToH2Queries.loadAll(session, urls)
val doms = pages.map { session.parseValueDom(it) }

return toResultSet("DOM", doms)
Expand Down Expand Up @@ -92,7 +92,7 @@ object DomFunctionTables {
return toResultSet("LINK", listOf<String>())
}

val links = Queries.loadAll(session, portalUrl, restrictCss, offset, limit, Queries::getLinks)
val links = DomToH2Queries.loadAll(session, portalUrl, restrictCss, offset, limit, DomToH2Queries::getLinks)
return toResultSet("LINK", links)
}

Expand All @@ -106,7 +106,7 @@ object DomFunctionTables {
return toResultSet("LINK", listOf<String>())
}

return toResultSet("LINK", Queries.getLinks(dom.element, cssQuery, offset, limit))
return toResultSet("LINK", DomToH2Queries.getLinks(dom.element, cssQuery, offset, limit))
}

@JvmStatic
Expand Down Expand Up @@ -187,7 +187,7 @@ object DomFunctionTables {
return toResultSet("DOM", listOf<ValueDom>())
}

val docs = Queries.loadOutPages(session, portal, restrictCss, offset, limit, normalize, ignoreQuery)
val docs = DomToH2Queries.loadOutPages(session, portal, restrictCss, offset, limit, normalize, ignoreQuery)
.map { session.parse(it) }

val elements = if (targetCss == ":root") {
Expand Down Expand Up @@ -239,7 +239,7 @@ object DomFunctionTables {
return toResultSet("DOM", listOf<ValueDom>())
}

val pages = Queries.loadOutPages(session, portalUrl, restrictCss, offset, limit, normalize, ignoreQuery)
val pages = DomToH2Queries.loadOutPages(session, portalUrl, restrictCss, offset, limit, normalize, ignoreQuery)

val docs = pages.map { session.parse(it) }

Expand Down Expand Up @@ -302,7 +302,7 @@ object DomFunctionTables {
/**
* Notice: be careful use rs.addRow(*it) to make sure a vararg is passed into rs.addRow
*/
dom.element.select(cssSelector, offset, limit) { Queries.getFeatureRow(it) }
dom.element.select(cssSelector, offset, limit) { DomToH2Queries.getFeatureRow(it) }
.forEach { rs.addRow(*it) }

return rs
Expand Down Expand Up @@ -368,7 +368,7 @@ object DomFunctionTables {
val drop = max(offset - 1, 0)
result.sortedByDescending { it.getFeature(SIB) }.asSequence()
.drop(drop).take(limit)
.map { Queries.getFeatureRow(it) }
.map { DomToH2Queries.getFeatureRow(it) }
.forEach { rs.addRow(it) }

return rs
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package ai.platon.pulsar.ql.h2.udfs
import ai.platon.pulsar.dom.select.select2
import ai.platon.pulsar.ql.annotation.UDFGroup
import ai.platon.pulsar.ql.annotation.UDFunction
import ai.platon.pulsar.ql.h2.Queries
import ai.platon.pulsar.ql.h2.DomToH2Queries
import ai.platon.pulsar.ql.types.ValueDom
import org.h2.value.ValueArray
import org.h2.value.ValueString
Expand All @@ -20,14 +20,14 @@ object DomInlineSelectFunctions {
@JvmStatic
fun inlineSelect(dom: ValueDom, cssQuery: String): ValueArray {
val elements = dom.element.select2(cssQuery)
return Queries.toValueArray(elements)
return DomToH2Queries.toValueArray(elements)
}

@UDFunction(description = "Select all match elements by the given css query from a DOM and return the result as an array of DOMs")
@JvmStatic
fun inlineSelect(dom: ValueDom, cssQuery: String, offset: Int, limit: Int): ValueArray {
val elements = dom.element.select2(cssQuery, offset, limit)
return Queries.toValueArray(elements)
return DomToH2Queries.toValueArray(elements)
}

@UDFunction(description = "Select all match elements by the given css query from a DOM and return the result as an array of DOMs")
Expand Down
Loading

0 comments on commit 8cb1792

Please sign in to comment.