Skip to content

Commit

Permalink
#191 Fixed City filter
Browse files Browse the repository at this point in the history
  • Loading branch information
arnaugarcia committed Jun 6, 2018
1 parent 45493a1 commit b7f9fd3
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

import javax.persistence.criteria.*;
import javax.swing.text.html.Option;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

Expand Down Expand Up @@ -134,11 +135,29 @@ private Specifications<T> createSpecification(SearchDTO criteria, boolean userLo
specification = specification.and(buildStringSpecification(criteria.getCategory(), Property_.propertyType));
}
if (criteria.getCity() != null) {
specification = specification.and(buildReferringEntitySpecification(criteria.getCity(), Property_.location, Location_.city));
specification = specification.and((root, query, builder) -> {
Join<Property, Location> propertyLocationJoin = root.join("location");
if (criteria.getCity().getContains() != null) {
return builder.or(
builder.like(propertyLocationJoin.get(Location_.city), "%" + criteria.getCity().getContains() + "%"),
builder.like(propertyLocationJoin.get(Location_.fullAddress), "%" + criteria.getCity().getContains() + "%")
);
}
if (criteria.getCity().getEquals() != null) {
return builder.or(
builder.equal(propertyLocationJoin.get(Location_.city), criteria.getCity().getEquals())
);
}
return null;
});
}
if (criteria.getKeywords() != null) {
specification = specification.or(buildStringSpecification(criteria.getKeywords(), Property_.title));
specification = specification.or(buildStringSpecification(criteria.getKeywords(), Property_.description));
specification = specification.and((root, query, builder) ->
builder.or(
builder.like(root.get(Property_.title), "%" + criteria.getKeywords() + "%"),
builder.like(root.get(Property_.description), "%" + criteria.getKeywords() + "%")
)
);
}
if (criteria.getBedrooms() != null) {
specification = specification.and(buildRangeSpecification(criteria.getBedrooms(), Apartment_.numberBedrooms));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package com.arnaugarcia.uplace.service.dto;

import com.arnaugarcia.uplace.service.filter.CityFilter;
import io.github.jhipster.service.filter.DoubleFilter;
import io.github.jhipster.service.filter.IntegerFilter;
import io.github.jhipster.service.filter.StringFilter;

public class SearchDTO {

private StringFilter city;
private CityFilter city;

private StringFilter category;

Expand All @@ -20,11 +21,11 @@ public class SearchDTO {

public SearchDTO() { }

public StringFilter getCity() {
public CityFilter getCity() {
return city;
}

public void setCity(StringFilter city) {
public void setCity(CityFilter city) {
this.city = city;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.arnaugarcia.uplace.service.filter;

public class CityFilter {

private String equals;
private String contains;

public String getEquals() {
return equals;
}

public void setEquals(String equals) {
this.equals = equals;
}

public String getContains() {
return contains;
}

public void setContains(String contains) {
this.contains = contains;
}
}

0 comments on commit b7f9fd3

Please sign in to comment.