package com.sf.monitor.utils; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Function; import com.google.common.base.Joiner; import com.google.common.collect.Lists; import java.util.List; public class TagValue { public static final String In = "in"; public static final String NotIn = "notin"; public static final String Equal = "="; public static final String NotEqual = "!="; public static final String Greater = ">"; public static final String GreaterEqual = ">="; public static final String Less = "<"; public static final String LessEqaul = "<="; @JsonProperty public String tag; @JsonProperty public Object value; @JsonProperty public String cmp; @JsonCreator public TagValue( @JsonProperty("tag") String tag, @JsonProperty("cmp") String cmp, @JsonProperty("value") Object value ) { this.tag = tag; this.value = value; this.cmp = (cmp == null) ? Equal : cmp; } public String toSql() { if (In.equals(cmp) || NotIn.equals(cmp)) { String joinLogic = In.equals(cmp) ? " or " : " and "; final String realCmp = In.equals(cmp) ? Equal : NotEqual; return Joiner.on(joinLogic).join( Lists.transform( (List) value, new Function() { @Override public Object apply(Object input) { return String.format("%s %s '%s'", tag, realCmp, input.toString()); } } ) ); }else { return String.format("%s %s '%s'", tag, cmp, value); } } }