/** * Add filter on descriptor columns . * * @param query * @param worklistDTO */ public static void addDescriptorFilters(Query query, WorklistFilterDTO worklistDTO) { Map<String, DescriptorFilterDTO> descFilterMap = worklistDTO.descriptorFilterMap; if (null != descFilterMap) { Map<String, DataPath> descriptors = ProcessDefinitionUtils.getAllDescriptors(false); GenericDescriptorFilterModel filterModel = GenericDescriptorFilterModel.create(descriptors.values()); filterModel.setFilterEnabled(true); for (Map.Entry<String, DescriptorFilterDTO> descriptor : descFilterMap.entrySet()) { Object value = null; String key = descriptor.getKey(); // Boolean type desc if (descriptor.getValue().type.equals(ColumnDataType.BOOLEAN.toString())) { value = ((BooleanDTO) descriptor.getValue().value).equals; } // String type desc else if (descriptor.getValue().type.equals(ColumnDataType.STRING.toString())) { value = ((TextSearchDTO) descriptor.getValue().value).textSearch; } // Number type desc else if (descriptor.getValue().type.equals(ColumnDataType.NUMBER.toString())) { Number from = ((RangeDTO) descriptor.getValue().value).from; Number to = ((RangeDTO) descriptor.getValue().value).to; value = new NumberRange(from, to); } // Date type desc else if (descriptor.getValue().type.equals(ColumnDataType.DATE.toString())) { Long from = ((RangeDTO) descriptor.getValue().value).from; Long to = ((RangeDTO) descriptor.getValue().value).to; value = new DateRange(); if (null != from) { ((DateRange) value).setFromDateValue(new Date(from)); } if (null != to) { ((DateRange) value).setToDateValue(new Date(to)); } } filterModel.setFilterValue(key, (Serializable) value); } DescriptorFilterUtils.applyFilters(query, filterModel); } }
/** * Populates the descriptor filter values. * * @param worklistFilter * @param descriptorColumnsFilterJson */ public static void populateDescriptorFilters( WorklistFilterDTO worklistFilter, JsonObject descriptorColumnsFilterJson, List<DescriptorColumnDTO> availableDescriptorColumns) { List<DescriptorColumnDTO> descriptorColumns = availableDescriptorColumns; Map<String, DescriptorFilterDTO> descriptorColumnMap = new HashMap<String, DescriptorFilterDTO>(); for (DescriptorColumnDTO descriptorColumnDTO : descriptorColumns) { Object filterDTO = null; String id = descriptorColumnDTO.id; if (null != descriptorColumnsFilterJson.get(id)) { // String TYPE if (ColumnDataType.STRING.toString().equals(descriptorColumnDTO.type)) { filterDTO = new Gson() .fromJson( descriptorColumnsFilterJson.get(id), WorklistFilterDTO.TextSearchDTO.class); } else if (ColumnDataType.DATE.toString().equals(descriptorColumnDTO.type) || ColumnDataType.NUMBER.toString().equals(descriptorColumnDTO.type)) { filterDTO = new Gson() .fromJson(descriptorColumnsFilterJson.get(id), WorklistFilterDTO.RangeDTO.class); } else if (ColumnDataType.BOOLEAN.toString().equals(descriptorColumnDTO.type)) { filterDTO = new Gson() .fromJson( descriptorColumnsFilterJson.get(id), WorklistFilterDTO.BooleanDTO.class); } descriptorColumnMap.put(id, new DescriptorFilterDTO(descriptorColumnDTO.type, filterDTO)); } } worklistFilter.descriptorFilterMap = descriptorColumnMap; }