update to content 3.0.0

This commit is contained in:
Jörg Prante 2021-05-27 16:30:35 +02:00
parent e951774a5d
commit f83ae36758
8 changed files with 54 additions and 30 deletions

View file

@ -28,7 +28,7 @@ subprojects {
apply from: rootProject.file('gradle/ide/idea.gradle') apply from: rootProject.file('gradle/ide/idea.gradle')
apply from: rootProject.file('gradle/compile/java.gradle') apply from: rootProject.file('gradle/compile/java.gradle')
apply from: rootProject.file('gradle/test/junit5.gradle') apply from: rootProject.file('gradle/test/junit5.gradle')
apply from: rootProject.file('gradle/repositories/maven.gradle')
apply from: rootProject.file('gradle/publishing/publication.gradle') apply from: rootProject.file('gradle/publishing/publication.gradle')
} }
apply from: rootProject.file('gradle/publishing/sonatype.gradle') apply from: rootProject.file('gradle/publishing/sonatype.gradle')

View file

@ -1,4 +1,5 @@
dependencies { dependencies {
api project(':cql-common') api project(':cql-common')
api "org.xbib:content-core:${project.property('xbib-content.version')}" implementation "org.xbib:content-core:${project.property('xbib-content.version')}"
implementation "org.xbib:content-json:${project.property('xbib-content.version')}"
} }

View file

@ -3,5 +3,6 @@ module org.xbib.cql.elasticsearch {
exports org.xbib.cql.elasticsearch.ast; exports org.xbib.cql.elasticsearch.ast;
exports org.xbib.cql.elasticsearch.model; exports org.xbib.cql.elasticsearch.model;
requires transitive org.xbib.cql; requires transitive org.xbib.cql;
requires transitive org.xbib.content.core; requires org.xbib.content.core;
requires org.xbib.content.json;
} }

View file

@ -1,6 +1,7 @@
package org.xbib.cql.elasticsearch; package org.xbib.cql.elasticsearch;
import org.xbib.content.XContentBuilder; import org.xbib.content.XContentBuilder;
import org.xbib.content.core.DefaultXContentBuilder;
import org.xbib.cql.BooleanGroup; import org.xbib.cql.BooleanGroup;
import org.xbib.cql.BooleanOperator; import org.xbib.cql.BooleanOperator;
import org.xbib.cql.CQLParser; import org.xbib.cql.CQLParser;
@ -158,7 +159,7 @@ public class ElasticsearchQueryGenerator implements Visitor {
} }
if (model.hasFilter()) { if (model.hasFilter()) {
queryGen.startFiltered(); queryGen.startFiltered();
} else if (filterGenerator.getResult().bytes().length() > 0) { } else if (filterGenerator.getResult().string().length() > 0) {
queryGen.startFiltered(); queryGen.startFiltered();
} }
Node querynode = stack.pop(); Node querynode = stack.pop();
@ -169,16 +170,18 @@ public class ElasticsearchQueryGenerator implements Visitor {
new Expression(Operator.EQUALS, new Name("cql.allIndexes"), querynode); new Expression(Operator.EQUALS, new Name("cql.allIndexes"), querynode);
} }
queryGen.visit((Expression) querynode); queryGen.visit((Expression) querynode);
if (model.hasFilter()) { if (model.hasFilter() && model.getFilterExpression() != null) {
queryGen.end(); queryGen.end();
filterGen = new FilterGenerator(queryGen); filterGen = new FilterGenerator(queryGen);
filterGen.startFilter(); filterGen.startFilter();
filterGen.visit(model.getFilterExpression()); filterGen.visit(model.getFilterExpression());
filterGen.endFilter(); filterGen.endFilter();
queryGen.end(); queryGen.end();
} else if (filterGenerator.getResult().bytes().length() > 0) { } else if (filterGenerator.getResult().string().length() > 0) {
queryGen.end(); queryGen.end();
queryGen.getResult().rawField("filter", filterGenerator.getResult().bytes().toBytes()); DefaultXContentBuilder contentBuilder = (DefaultXContentBuilder) filterGenerator.getResult();
byte[] b = contentBuilder.bytes().toBytes();
queryGen.getResult().rawField("filter", b, 0, b.length);
queryGen.endFiltered(); queryGen.endFiltered();
} }
if (boostField != null) { if (boostField != null) {

View file

@ -1,13 +1,11 @@
package org.xbib.cql.elasticsearch; package org.xbib.cql.elasticsearch;
import org.xbib.content.XContentBuilder; import org.xbib.content.XContentBuilder;
import org.xbib.content.core.DefaultXContentBuilder;
import org.xbib.content.json.JsonXContent; import org.xbib.content.json.JsonXContent;
import java.io.IOException; import java.io.IOException;
/**
*
*/
public class SourceGenerator { public class SourceGenerator {
private final XContentBuilder builder; private final XContentBuilder builder;
@ -16,22 +14,27 @@ public class SourceGenerator {
this.builder = JsonXContent.contentBuilder(); this.builder = JsonXContent.contentBuilder();
} }
public void build(QueryGenerator query, public void build(QueryGenerator query) throws IOException {
int from, int size) throws IOException { build(query, null, null, null, null);
}
public void build(QueryGenerator query, Integer from, Integer size) throws IOException {
build(query, from, size, null, null); build(query, from, size, null, null);
} }
public void build(QueryGenerator query, int from, int size, XContentBuilder sort, XContentBuilder facets) public void build(QueryGenerator query, Integer from, Integer size,
throws IOException { XContentBuilder sort, XContentBuilder facets) throws IOException {
builder.startObject(); builder.startObject();
if (query != null) {
if (from != null) {
builder.field("from", from); builder.field("from", from);
builder.field("size", size);
builder.rawField("query", query.getResult().bytes().toBytes());
if (sort != null && sort.bytes().length() > 0) {
builder.rawField("sort", sort.bytes().toBytes());
} }
if (facets != null && facets.bytes().length() > 0) { if (size != null) {
builder.rawField("aggregations", facets.bytes().toBytes()); builder.field("size", size);
}
copy(builder, "query", query.getResult());
copy(builder, "sort", sort);
copy(builder, "aggregations", facets);
} }
builder.endObject(); builder.endObject();
builder.close(); builder.close();
@ -40,4 +43,14 @@ public class SourceGenerator {
public XContentBuilder getResult() { public XContentBuilder getResult() {
return builder; return builder;
} }
private void copy(XContentBuilder builder, String rawFieldName, XContentBuilder anotherBuilder) throws IOException {
if (anotherBuilder != null) {
DefaultXContentBuilder contentBuilder = (DefaultXContentBuilder) anotherBuilder;
if (contentBuilder.bytes().length() > 0) {
byte[] b = contentBuilder.bytes().toBytes();
builder.rawField(rawFieldName, b, 0, b.length);
}
}
}
} }

View file

@ -1,6 +1,6 @@
group = org.xbib group = org.xbib
name = cql name = cql
version = 3.0.5 version = 3.1.0
gradle.wrapper.version = 6.6.1 gradle.wrapper.version = 6.6.1
xbib-content.version = 2.6.4 xbib-content.version = 3.0.0

View file

@ -53,7 +53,8 @@ if (project.hasProperty("signing.keyId")) {
} }
} }
nexusPublishing { if (project.hasProperty("ossrhUsername")) {
nexusPublishing {
repositories { repositories {
sonatype { sonatype {
username = project.property('ossrhUsername') username = project.property('ossrhUsername')
@ -61,4 +62,5 @@ nexusPublishing {
packageGroup = "org.xbib" packageGroup = "org.xbib"
} }
} }
}
} }

View file

@ -0,0 +1,4 @@
repositories {
mavenLocal()
mavenCentral()
}