/** * Get the filters from the JSON string * * @param jsonFilterString * @return */ public static WorklistFilterDTO getFilters( String jsonFilterString, List<DescriptorColumnDTO> availableDescriptorColumns) { WorklistFilterDTO worklistFilter = null; if (StringUtils.isNotEmpty(jsonFilterString)) { try { JsonMarshaller jsonIo = new JsonMarshaller(); JsonObject json = jsonIo.readJsonObject(jsonFilterString); worklistFilter = DTOBuilder.buildFromJSON( json, WorklistFilterDTO.class, WorklistFilterDTO.getCustomTokens()); populateDescriptorFilters(worklistFilter, json, availableDescriptorColumns); } catch (Exception e) { trace.error("Error in Deserializing filter JSON", e); } } return worklistFilter; }
/** * 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; }