package alien4cloud.dao;
import java.util.Map;
import com.google.common.collect.Maps;
/**
* Utility to build simple filters for ES mapping filtering.
*/
public final class FilterUtil {
private FilterUtil() {
}
/**
* Get a simple filter with a single key.
*
* @param key The key for the filter.
* @param values The value for the filter.
* @return The filters map.
*/
public static Map<String, String[]> singleKeyFilter(String key, String... values) {
Map<String, String[]> filters = Maps.newHashMap();
if (values == null) {
filters.put(key, new String[] { null });
} else {
filters.put(key, values);
}
return filters;
}
/**
* Add a simple filter with a single key to the given filter list only if the key does'nt exists already.
*
* @param filters The exiting map of filters in which to add fitlers
* @param key The key for the filter.
* @param values The value for the filter.
* @return The filters map.
*/
public static Map<String, String[]> singleKeyFilter(Map<String, String[]> filters, String key, String... values) {
if (filters == null) {
return singleKeyFilter(key, values);
}
if (!filters.containsKey(key)) {
filters.put(key, values);
}
return filters;
}
/**
* Get simple filter map with a single value per key based on key1, value1, key2, value2 etc.
*
* @param keyValues The list of key1, value1, key2, value2 etc.
* @return The filters map.
*/
public static Map<String, String[]> fromKeyValueCouples(String... keyValues) {
Map<String, String[]> filters = Maps.newHashMap();
for (int i = 0; i < keyValues.length; i += 2) {
singleKeyFilter(filters, keyValues[i], keyValues[i + 1]);
}
return filters;
}
/**
* Add simple filter map with a single value per key based on key1, value1, key2, value2 etc.
*
* @param filters The exiting map of filters in which to add fitlers
* @param keyValues The list of key1, value1, key2, value2 etc.
* @return The filters map.
*/
public static Map<String, String[]> fromKeyValueCouples(Map<String, String[]> filters, String... keyValues) {
if (filters == null) {
return fromKeyValueCouples(keyValues);
}
for (int i = 0; i < keyValues.length; i += 2) {
singleKeyFilter(filters, keyValues[i], keyValues[i + 1]);
}
return filters;
}
}