package com.midea.cloudSearch.druid.segment; import java.util.HashMap; import java.util.List; import java.util.Map; public class MethodField extends Field { private List<KVValue> params = null; private String option; public MethodField(String name, List<KVValue> params, String option, String alias) { super(name, alias); this.params = params; this.option = option; if (alias==null||alias.trim().length()==0) { Map<String, Object> paramsAsMap = this.getParamsAsMap(); if(paramsAsMap.containsKey("alias")){ this.setAlias(paramsAsMap.get("alias").toString()); } else { this.setAlias(this.toString()); } } } public List<KVValue> getParams() { return params; } public Map<String,Object> getParamsAsMap(){ Map<String,Object> paramsAsMap = new HashMap<>(); if(this.params == null ) return paramsAsMap; for(KVValue kvValue : this.params){ paramsAsMap.put(kvValue.key,kvValue.value); } return paramsAsMap; } @Override public String toString() { if (option != null) { return this.name + "(" + option + " " + Util.joiner(params, ",") + ")"; } return this.name + "(" + Util.joiner(params, ",") + ")"; } public String getOption() { return option; } public void setOption(String option) { this.option = option; } @Override public boolean isNested() { Map<String, Object> paramsAsMap = this.getParamsAsMap(); return paramsAsMap.containsKey("nested") || paramsAsMap.containsKey("reverse_nested"); } @Override public boolean isReverseNested() { return this.getParamsAsMap().containsKey("reverse_nested"); } @Override public String getNestedPath() { if(!this.isNested()) return null; if(this.isReverseNested()){ String reverseNestedPath = this.getParamsAsMap().get("reverse_nested").toString(); return reverseNestedPath.isEmpty() ? null : reverseNestedPath; } return this.getParamsAsMap().get("nested").toString(); } }