Skip to content

Commit

Permalink
feat: add between operation (#6)
Browse files Browse the repository at this point in the history
  • Loading branch information
arnaud-thorel-of committed Apr 5, 2024
1 parent 7ad8cd7 commit cf0a872
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 4 deletions.
13 changes: 9 additions & 4 deletions src/main/java/fr/ouestfrance/querydsl/FilterOperation.java
@@ -1,10 +1,7 @@
package fr.ouestfrance.querydsl;

import fr.ouestfrance.querydsl.service.validators.ValidatedBy;
import fr.ouestfrance.querydsl.service.validators.impl.BooleanValidator;
import fr.ouestfrance.querydsl.service.validators.impl.CollectionValidator;
import fr.ouestfrance.querydsl.service.validators.impl.ComparableValidator;
import fr.ouestfrance.querydsl.service.validators.impl.StringValidator;
import fr.ouestfrance.querydsl.service.validators.impl.*;

/**
* Operations allowed by querydsl
Expand Down Expand Up @@ -80,4 +77,12 @@ class NOTIN implements FilterOperation {
@ValidatedBy(BooleanValidator.class)
class ISNULL implements FilterOperation {
}


/**
* Between Operation
*/
@ValidatedBy(HasRangeValidator.class)
class BETWEEN implements FilterOperation {
}
}
37 changes: 37 additions & 0 deletions src/main/java/fr/ouestfrance/querydsl/service/ext/HasRange.java
@@ -0,0 +1,37 @@
package fr.ouestfrance.querydsl.service.ext;

/**
* Interface for range values
*
* @param <T> the type of the range (like localDate, String, integers, ...)
*/
public interface HasRange<T> {

/**
* Get the lower bound of the range
*
* @return the lower bound or null if unbounded
*/
T getLower();

/**
* Get the upper bound of the range
*
* @return the upper bound or null if unbounded
*/
T getUpper();

/**
* Check if the lower bound is inclusive
*
* @return true if the lower bound is inclusive
*/
boolean isLowerInclusive();

/**
* Check if the upper bound is inclusive
*
* @return true if the upper bound is inclusive
*/
boolean isUpperInclusive();
}
@@ -0,0 +1,21 @@
package fr.ouestfrance.querydsl.service.validators.impl;

import fr.ouestfrance.querydsl.service.ext.HasRange;
import fr.ouestfrance.querydsl.service.validators.FilterFieldValidator;
import lombok.NoArgsConstructor;

/**
* Validator that handle filter on HasRange
*/
@NoArgsConstructor
public class HasRangeValidator implements FilterFieldValidator {
@Override
public boolean validate(Class<?> clazz) {
return HasRange.class.isAssignableFrom(clazz);
}

@Override
public String message() {
return "should be applied to HasRange";
}
}

0 comments on commit cf0a872

Please sign in to comment.