Skip to content

Commit

Permalink
Merge 696fe79 into 175805b
Browse files Browse the repository at this point in the history
  • Loading branch information
Ant-hem committed Sep 25, 2018
2 parents 175805b + 696fe79 commit df567eb
Show file tree
Hide file tree
Showing 13 changed files with 899 additions and 64 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.algolia.search.inputs.query_rules;

import com.algolia.search.objects.Hide;
import com.fasterxml.jackson.annotation.JsonInclude;

import java.io.Serializable;
import java.util.List;
import java.util.Map;
Expand All @@ -10,6 +12,7 @@ public class Consequence implements Serializable {
private ConsequenceParams params;
private List<ConsequencePromote> promote;
private Map<String, Object> userData;
private List<Hide> hide;

public Consequence() {}

Expand Down Expand Up @@ -39,4 +42,12 @@ public Consequence setUserData(Map<String, Object> userData) {
this.userData = userData;
return this;
}

public List<Hide> getHide() {
return hide;
}

public void setHide(List<Hide> hide) {
this.hide = hide;
}
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,30 @@
package com.algolia.search.inputs.query_rules;

import com.algolia.search.Defaults;
import com.algolia.search.objects.*;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonSetter;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.ObjectCodec;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;

import java.io.IOException;
import java.util.List;

@SuppressWarnings({"WeakerAccess", "unused"})
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ConsequenceParams extends Query {
public class ConsequenceParams<T> extends Query {
private ConsequenceQuery query;
private List<String> automaticFacetFilters;
private List<String> automaticOptionalFacetFilters;
@JsonDeserialize(using = AutomaticFacetFilterDeserializer.class)
private List<T> automaticFacetFilters;
@JsonDeserialize(using = AutomaticFacetFilterDeserializer.class)
private List<T> automaticOptionalFacetFilters;

public ConsequenceParams() {}
public ConsequenceParams() {
}

public ConsequenceQuery getQuery() {
return query;
Expand All @@ -24,23 +35,23 @@ public ConsequenceParams setQuery(ConsequenceQuery query) {
return this;
}

public List<String> getAutomaticFacetFilters() {
public List<T> getAutomaticFacetFilters() {
return automaticFacetFilters;
}

public ConsequenceParams setAutomaticFacetFilters(List<String> automaticFacetFilters) {
public ConsequenceParams setAutomaticFacetFilters(List<T> automaticFacetFilters) {
this.automaticFacetFilters = automaticFacetFilters;
return this;
}

public List<String> getAutomaticOptionalFacetFilters() {
public List<T> getAutomaticOptionalFacetFilters() {
return automaticOptionalFacetFilters;
}

// Fields from Query

public ConsequenceParams setAutomaticOptionalFacetFilters(
List<String> automaticOptionalFacetFilters) {
List<T> automaticOptionalFacetFilters) {
this.automaticOptionalFacetFilters = automaticOptionalFacetFilters;
return this;
}
Expand Down Expand Up @@ -129,12 +140,12 @@ public Long getMaxFacetHits() {
return maxFacetHits;
}

public ConsequenceParams setMaxFacetHits(Integer maxFacetHits) {
@JsonSetter
public ConsequenceParams setMaxFacetHits(Long maxFacetHits) {
return (ConsequenceParams) super.setMaxFacetHits(maxFacetHits);
}

@JsonSetter
public ConsequenceParams setMaxFacetHits(Long maxFacetHits) {
public ConsequenceParams setMaxFacetHits(Integer maxFacetHits) {
return (ConsequenceParams) super.setMaxFacetHits(maxFacetHits);
}

Expand All @@ -159,7 +170,7 @@ public List<String> getRestrictSearchableAttributes() {
}

public ConsequenceParams setRestrictSearchableAttributes(
List<String> restrictSearchableAttributes) {
List<String> restrictSearchableAttributes) {
return (ConsequenceParams) super.setRestrictSearchableAttributes(restrictSearchableAttributes);
}

Expand All @@ -183,12 +194,12 @@ public Long getMaxValuesPerFacet() {
return maxValuesPerFacet;
}

public ConsequenceParams setMaxValuesPerFacet(Integer maxValuesPerFacet) {
@JsonSetter
public ConsequenceParams setMaxValuesPerFacet(Long maxValuesPerFacet) {
return (ConsequenceParams) super.setMaxValuesPerFacet(maxValuesPerFacet);
}

@JsonSetter
public ConsequenceParams setMaxValuesPerFacet(Long maxValuesPerFacet) {
public ConsequenceParams setMaxValuesPerFacet(Integer maxValuesPerFacet) {
return (ConsequenceParams) super.setMaxValuesPerFacet(maxValuesPerFacet);
}

Expand Down Expand Up @@ -309,58 +320,58 @@ public Boolean getRestrictHighlightAndSnippetArrays() {
}

public ConsequenceParams setRestrictHighlightAndSnippetArrays(
Boolean restrictHighlightAndSnippetArrays) {
Boolean restrictHighlightAndSnippetArrays) {
return (ConsequenceParams)
super.setRestrictHighlightAndSnippetArrays(restrictHighlightAndSnippetArrays);
super.setRestrictHighlightAndSnippetArrays(restrictHighlightAndSnippetArrays);
}

public Long getPage() {
return page;
}

public ConsequenceParams setPage(Integer page) {
public ConsequenceParams setPage(Long page) {
return (ConsequenceParams) super.setPage(page);
}

public ConsequenceParams setPage(Long page) {
public ConsequenceParams setPage(Integer page) {
return (ConsequenceParams) super.setPage(page);
}

public Long getHitsPerPage() {
return hitsPerPage;
}

public ConsequenceParams setHitsPerPage(Integer hitsPerPage) {
@JsonSetter
public ConsequenceParams setHitsPerPage(Long hitsPerPage) {
return (ConsequenceParams) super.setHitsPerPage(hitsPerPage);
}

@JsonSetter
public ConsequenceParams setHitsPerPage(Long hitsPerPage) {
public ConsequenceParams setHitsPerPage(Integer hitsPerPage) {
return (ConsequenceParams) super.setHitsPerPage(hitsPerPage);
}

public Long getOffset() {
return offset;
}

public ConsequenceParams setOffset(Integer offset) {
public ConsequenceParams setOffset(Long offset) {
return (ConsequenceParams) super.setOffset(offset);
}

public ConsequenceParams setOffset(Long offset) {
public ConsequenceParams setOffset(Integer offset) {
return (ConsequenceParams) super.setOffset(offset);
}

public Long getLength() {
return length;
}

public ConsequenceParams setLength(Integer length) {
@JsonSetter
public ConsequenceParams setLength(Long length) {
return (ConsequenceParams) super.setLength(length);
}

@JsonSetter
public ConsequenceParams setLength(Long length) {
public ConsequenceParams setLength(Integer length) {
return (ConsequenceParams) super.setLength(length);
}

Expand Down Expand Up @@ -473,13 +484,47 @@ public List<String> getDisableTypoToleranceOnAttributes() {
}

public ConsequenceParams setDisableTypoToleranceOnAttributes(
List<String> disableTypoToleranceOnAttributes) {
List<String> disableTypoToleranceOnAttributes) {
return (ConsequenceParams)
super.setDisableTypoToleranceOnAttributes(disableTypoToleranceOnAttributes);
super.setDisableTypoToleranceOnAttributes(disableTypoToleranceOnAttributes);
}

@JsonAnySetter
public ConsequenceParams addCustomParameter(String key, String value) {
return (ConsequenceParams) super.addCustomParameter(key, value);
}
}

class AutomaticFacetFilterDeserializer extends JsonDeserializer {

/**
* This object can be a List<String> or a List<AutomaticFacetFilter> so it needs a custom deserializer
*
* @param jp
* @param ctxt
* @return
* @throws IOException
*/
@Override
public Object deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException {

ObjectCodec oc = jp.getCodec();
JsonNode node = oc.readTree(jp);
ObjectMapper objectMapper = Defaults.DEFAULT_OBJECT_MAPPER;

if ((!node.isNull() && node.size() > 0)) {
if (node.get(0).has("disjunctive") || node.get(0).has("score")) {
ObjectReader reader = objectMapper.readerFor(new TypeReference<List<AutomaticFacetFilter>>() {
});
return reader.readValue(node);
} else {
ObjectReader reader = objectMapper.readerFor(new TypeReference<List<String>>() {
});
return reader.readValue(node);
}
} else {
return null;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,46 @@
package com.algolia.search.inputs.query_rules;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.algolia.search.Defaults;
import com.algolia.search.objects.Edit;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.ObjectCodec;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;

import java.io.IOException;
import java.io.Serializable;
import java.util.List;

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonDeserialize(using = ConsequenceQueryDeserializer.class)
public abstract class ConsequenceQuery implements Serializable {
}

class ConsequenceQueryDeserializer extends JsonDeserializer<ConsequenceQuery> {
@Override
public ConsequenceQuery deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
ObjectCodec oc = jp.getCodec();
JsonNode node = oc.readTree(jp);
ObjectMapper objectMapper = Defaults.DEFAULT_OBJECT_MAPPER;

if(node.has("edits")){
ObjectReader reader = objectMapper.readerFor(new TypeReference<List<Edit>>() {
});
List<Edit> list = reader.readValue(node.get("edits"));
return new ConsequenceQueryObject().setEdits(list);
}
else if(node.has("remove")){
ObjectReader reader = objectMapper.readerFor(new TypeReference<List<String>>() {
});

List<String> list = reader.readValue(node.get("remove"));

@JsonInclude(JsonInclude.Include.NON_NULL)
public abstract class ConsequenceQuery implements Serializable {}
return new ConsequenceQueryObject().setRemove(list);
}
else {
return new ConsequenceQueryString(node.asText()); // not sure it's not even possible to save a rule like that
}
}
}
Original file line number Diff line number Diff line change
@@ -1,21 +1,40 @@
package com.algolia.search.inputs.query_rules;

import com.algolia.search.objects.Edit;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;

import java.util.List;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class ConsequenceQueryObject extends ConsequenceQuery {

private List<String> remove;
private List<Edit> edits;

public ConsequenceQueryObject() {}

@Deprecated
public List<String> getRemove() {
return remove;
}

/**
* Old features use edits instead
*/
@Deprecated
public ConsequenceQueryObject setRemove(List<String> remove) {
this.remove = remove;
return this;
}

public List<Edit> getEdits() {
return edits;
}

public ConsequenceQueryObject setEdits(List<Edit> edits) {
this.edits = edits;
return this;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ public class ConsequenceQueryString extends ConsequenceQuery {

private final String query;

ConsequenceQueryString(String query) {
public ConsequenceQueryString(String query) {
this.query = query;
}

Expand Down
Loading

0 comments on commit df567eb

Please sign in to comment.