package io.searchbox.indices.aliases;
import com.google.common.base.Joiner;
import java.util.*;
/**
* @author cihat keser
*/
public abstract class AliasMapping {
protected List<String> indices = new LinkedList<String>();
protected String alias;
protected Map<String, Object> filter;
protected List<String> searchRouting = new LinkedList<String>();
protected List<String> indexRouting = new LinkedList<String>();
public abstract String getType();
public List<Map<String, Object>> getData() {
List<Map<String, Object>> retList = new LinkedList<Map<String, Object>>();
for (String index : indices) {
Map<String, Object> paramsMap = new LinkedHashMap<String, Object>();
paramsMap.put("index", index);
paramsMap.put("alias", alias);
if (filter != null) {
paramsMap.put("filter", filter);
}
if (searchRouting.size() > 0) {
paramsMap.put("search_routing", Joiner.on(',').join(searchRouting));
}
if (indexRouting.size() > 0) {
paramsMap.put("index_routing", Joiner.on(',').join(indexRouting));
}
Map<String, Object> actionMap = new LinkedHashMap<String, Object>();
actionMap.put(getType(), paramsMap);
retList.add(actionMap);
}
return retList;
}
}