use of nl.knaw.huygens.timbuctoo.search.FacetValue in project timbuctoo by HuygensING.
the class DutchCaribbeanArchiveAndArchiverPeriodFacetDescriptionTest method shouldContainJustRight.
private void shouldContainJustRight(GraphTraversal<Vertex, Vertex> traversal, long startYear, long endYear) {
List<FacetValue> facetValues = Lists.newArrayList(new DateRangeFacetValue(FACET_NAME, startYear * 10_000, endYear * 10_000));
instance.filter(traversal, facetValues);
assertThat(traversal.toList(), contains(likeVertex().withTimId("just_right")));
}
use of nl.knaw.huygens.timbuctoo.search.FacetValue in project timbuctoo by HuygensING.
the class ChangeRangeFacetDescription method filter.
@Override
@SuppressWarnings("unchecked")
public void filter(GraphTraversal<Vertex, Vertex> graphTraversal, List<FacetValue> facets) {
Optional<FacetValue> first = facets.stream().filter(facetValue -> Objects.equals(facetValue.getName(), facetName)).findFirst();
if (!first.isPresent()) {
return;
}
FacetValue facetValue = first.get();
if (!(facetValue instanceof DateRangeFacetValue)) {
return;
}
long lowerLimit = ((DateRangeFacetValue) facetValue).getLowerLimit();
LocalDate lowerLimitDate = LocalDate.parse("" + lowerLimit, FORMATTER);
long upperLimit = ((DateRangeFacetValue) facetValue).getUpperLimit();
LocalDate upperLimitDate = LocalDate.parse(("" + upperLimit), FORMATTER);
// Use range because the java.time.Period has no way to determine if a date falls in that Period.
Range<LocalDate> period = Range.closed(lowerLimitDate, upperLimitDate);
graphTraversal.where(__.has(propertyName, P.test((o1, o2) -> {
try {
LocalDate localDate = getChangeLocalDate(o1);
return ((Range<LocalDate>) o2).contains(localDate);
} catch (IOException e) {
LOG.error("Date {} cannot be parsed.", o1);
}
return false;
}, period)));
}
use of nl.knaw.huygens.timbuctoo.search.FacetValue in project timbuctoo by HuygensING.
the class CharterPortaalFondsFacetDescription method filter.
@Override
public void filter(GraphTraversal<Vertex, Vertex> graphTraversal, List<FacetValue> facets) {
Optional<FacetValue> first = facets.stream().filter(facetValue -> Objects.equals(facetValue.getName(), getName())).findFirst();
if (first.isPresent()) {
FacetValue facetValue = first.get();
if (facetValue instanceof ListFacetValue) {
ListFacetValue listFacetValue = (ListFacetValue) facetValue;
List<String> values = listFacetValue.getValues();
if (values.isEmpty()) {
return;
}
List<String> formattedVals = values.stream().map(val -> val.substring(val.indexOf("(") + 1, val.length() - 1)).collect(toList());
graphTraversal.where(__.has(FONDS, P.within(formattedVals)));
} else {
LOG.error("Facet with name '{}' is not a ListFacet", getName());
}
}
}
use of nl.knaw.huygens.timbuctoo.search.FacetValue in project timbuctoo by HuygensING.
the class FacetParsingHelp method getValue.
static Optional<DateRangeFacetValue> getValue(String facetName, List<FacetValue> facets) {
Optional<FacetValue> first = facets.stream().filter(facetValue -> Objects.equals(facetValue.getName(), facetName)).findFirst();
if (!first.isPresent()) {
return Optional.empty();
}
FacetValue facetValue = first.get();
if (!(facetValue instanceof DateRangeFacetValue)) {
return Optional.empty();
}
DateRangeFacetValue casted = (DateRangeFacetValue) facetValue;
// normalize input, make sure its always YYYY
// the input from the client is YNNNN YYNNNN YYYNNNN etc. NNNN goes from 0000 to 9999 and means 1/10th milliYear
// (1/10,000th of a year)
casted.setLowerLimit(casted.getLowerLimit() / 10000);
casted.setUpperLimit(casted.getUpperLimit() / 10000);
return Optional.of(casted);
}
use of nl.knaw.huygens.timbuctoo.search.FacetValue in project timbuctoo by HuygensING.
the class MultiValueListFacetDescription method filter.
@Override
public void filter(GraphTraversal<Vertex, Vertex> graphTraversal, List<FacetValue> facetValues) {
Optional<FacetValue> first = facetValues.stream().filter(facetValue -> Objects.equals(facetValue.getName(), facetName)).findFirst();
if (!first.isPresent()) {
return;
}
FacetValue facetValue = first.get();
if (!(facetValue instanceof ListFacetValue)) {
return;
}
List<String> values = ((ListFacetValue) facetValue).getValues();
if (values.isEmpty()) {
return;
}
graphTraversal.where(__.<String>has(propertyName, P.test((o1, o2) -> o1 instanceof String && o2 instanceof List && ((List<?>) o2).stream().anyMatch(value -> ((String) o1).contains("\"" + value + "\"")), values)));
}
Aggregations