@Filterable - redundent/lombok-pg GitHub Wiki

@Filterable

Overview

Generates Functions and Predicates for the fields with this annotation. What is generated depends on the type of field

Example

With Lombok

import java.sql.Timestamp;
import lombok.Filterable;
public class DataObject {
	@Filterable
	private long dataObjectId;
	@Filterable
	private String name;
	private String description;
	@Filterable
	private Timestamp createdDate;
	private Timestamp updatedDate;
}

Vanilla Java

import java.sql.Timestamp;
import lombok.Function;
import lombok.Predicate
public class DataObject implements XmlSerializable {	
	private long dataObjectId;
	private String name;
	private String description;
	private Timestamp createdDate;
	private Timestamp updatedDate;
	
	@Predicate
	public static boolean dataObjectIdEquals(final DataObject dataObject, final long _dataObjectId) {
		return dataObject.dataObjectId == _dataObjectId;
	}

	@Predicate
	public static boolean dataObjectIdGreaterThan(final DataObject dataObject, final long _dataObjectId) {
		return dataObject.dataObjectId > _dataObjectId;
	}

	@Predicate
	public static boolean dataObjectIdGreaterThanEqual(final DataObject dataObject, final long _dataObjectId) {
		return dataObject.dataObjectId >= _dataObjectId;
	}

	@Predicate
	public static boolean dataObjectIdLessThan(final DataObject dataObject, final long _dataObjectId) {
		return dataObject.dataObjectId < _dataObjectId;
	}
	
	@Predicate
	public static boolean dataObjectIdLessThanEqual(final DataObject dataObject, final long _dataObjectId) {
		return dataObject.dataObjectId <= _dataObjectId;
	}

	@Function
	public static long dataObjectId(final DataObject dataObject) {
		return dataObject.dataObjectId;
	}

	@Predicate
	public static boolean nameEquals(final DataObject dataObject, final String _name) {
		return dataObject.name.equals(_name);
	}
	
	@Predicate
	public static boolean nameContains(final DataObject dataObject, final String _name) {
		return dataObject.name.contains(_name);
	}
	
	@Predicate
	public static boolean nameStartsWith(final DataObject dataObject, final String _name) {
		return dataObject.name.startsWith(_name);
	}
	
	@Predicate
	public static boolean nameEndsWith(final DataObject dataObject, final String _name) {
		return dataObject.name.endsWith(_name);
	}
	
	@Function
	public static String name(final DataObject dataObject) {
		return dataObject.name;
	}

	@Predicate
	public static boolean startDateEquals(final DataObject dataObject, final Timestamp _startDate) {
		return dataObject.startDate.equals(_startDate);
	}
	
	@Predicate
	public static boolean startDateGreaterThan(final DataObject dataObject, final Timestamp _startDate) {
		return dataObject.startDate.after(_startDate);
	}
	
	@Predicate
	public static boolean startDateGreaterThanEqual(final DataObject dataObject, final Timestamp _startDate) {
		return dataObject.startDate.after(_startDate) || dataObject.startDate.equals(_startDate);
	}
	
	@Predicate
	public static boolean startDateLessThan(final DataObject dataObject, final Timestamp _startDate) {
		return dataObject.startDate.before(_startDate);
	}
	
	@Predicate
	public static boolean startDateLessThanEqual(final DataObject dataObject, final Timestamp _startDate) {
		return dataObject.startDate.before(_startDate) || dataObject.startDate.equals(_startDate);
	}
	
	@Function
	public static Timestamp startDate(final DataObject dataObject) {
		return dataObject.startDate;
	}
}