package edu.ualberta.med.biobank.common.reports.filters; /** * These <code>enum</code>-s should only be @Depricate-d, NEVER DELETED. They * correspond to database entries and if are altered may result in catastrophe. * * @author jferland * */ public enum FilterOperator { // These enum-s should only be @Deprecated, NEVER DELETED. They // correspond to database entries and if are altered may result in // catastrophe (at least if the id value is altered). // Shared operators BETWEEN(1, false, true), NOT_BETWEEN(2, false, true), IS_IN(3), IS_NOT_IN(4), BETWEEN_ANY( 5), NOT_BETWEEN_ANY(6), IS_NOT_SET(7, false, false), EQUALS(8, false, true), DOES_NOT_EQUAL(9, false, true), IS_SET(10, false, false), // String operators MATCHES(101, false, true), DOES_NOT_MATCH(102, false, true), MATCHES_ALL( 103), MATCHES_ANY(104), DOES_NOT_MATCH_ANY(105), // Number operators LESS_THAN(201, false, true), LESS_THAN_OR_EQUAL_TO(202, false, true), GREATER_THAN( 203, false, true), GREATER_THAN_OR_EQUAL_TO(204, false, true), // Date operators ON_OR_BEFORE(301, false, true), ON_OR_AFTER(302, false, true), THIS_DAY(321, false, false), THIS_WEEK(322, false, false), THIS_MONTH(323, false, false), THIS_YEAR(324, false, false), SAME_DAY_AS_ANY(341), SAME_WEEK_AS_ANY(342), SAME_MONTH_AS_ANY(343), SAME_YEAR_AS_ANY( 344), // Boolean operators YES(401, false, false), NO(402, false, false), // Custom filter operators IS_NOT_IN_A_CONTAINER(1001, false, false); private final int id; private final boolean isSetOperator; private final boolean isValueRequired; private FilterOperator(int id, boolean isSetOperator, boolean isValueRequired) { this.id = id; this.isSetOperator = isSetOperator; this.isValueRequired = isValueRequired; } private FilterOperator(int id) { this(id, true, true); } public int getId() { return id; } public boolean isValueRequired() { return isValueRequired; } public boolean isSetOperator() { return isSetOperator; } public String getDisplayString() { return this.name().replace('_', ' ').toLowerCase(); } public static FilterOperator getFilterOperator(int id) { // TODO: make a map once and use it instead for (FilterOperator op : FilterOperator.values()) { if (op.getId() == id) { return op; } } return null; } }