Merge "Add initial sources"
[externalapi/nbi.git] / src / main / java / org / onap / nbi / commons / QueryParserUtils.java
1 package org.onap.nbi.commons;
2
3 import java.util.ArrayList;
4 import java.util.Arrays;
5 import java.util.HashSet;
6 import java.util.List;
7 import java.util.Map.Entry;
8 import java.util.Set;
9 import org.springframework.util.LinkedMultiValueMap;
10 import org.springframework.util.MultiValueMap;
11
12 /**
13  *
14  */
15 public class QueryParserUtils {
16
17     private QueryParserUtils() {}
18
19     /**
20      *
21      * @param queryParameters
22      * @return
23      */
24     public static Set<String> getFields(MultiValueMap<String, String> queryParameters) {
25
26         Set<String> fieldSet = new HashSet<>();
27         if (queryParameters != null) {
28             // search for "all" parameter
29             if (queryParameters.containsKey(ReservedKeys.ALL_FIELDS)) {
30                 queryParameters.remove(ReservedKeys.ALL_FIELDS);
31                 fieldSet.add(ReservedKeys.ALL_FIELDS);
32             }
33             // search for "fields" parameters
34             List<String> queryParameterField =
35                     queryParameters.remove(ReservedKeys.QUERY_KEY_FIELD_ESCAPE + ReservedKeys.QUERY_KEY_FIELD);
36             if (queryParameterField == null) {
37                 queryParameterField = queryParameters.remove(ReservedKeys.QUERY_KEY_FIELD);
38             }
39             if (queryParameterField != null && !queryParameterField.isEmpty()) {
40                 String queryParameterValue = queryParameterField.get(0);
41                 if (queryParameterValue != null) {
42                     String[] tokenArray = queryParameterValue.split(",");
43                     fieldSet.addAll(Arrays.asList(tokenArray));
44                 }
45             }
46         }
47         return fieldSet;
48     }
49
50     public static MultiValueMap<String, String> popCriteria(MultiValueMap<String, String> queryParameters) {
51
52         Set<Entry<String, List<String>>> entrySet = queryParameters.entrySet();
53
54         MultiValueMap<String, String> criterias = new LinkedMultiValueMap<String, String>();
55
56         entrySet.stream().forEach(entry -> {
57             final List<String> tempValues = new ArrayList<String>();
58             entry.getValue().stream().forEach(value -> tempValues.addAll(Arrays.asList(value.split(","))));
59             criterias.put(entry.getKey(), tempValues);
60         });
61
62         return criterias;
63     }
64
65 }