package com.alibaba.hsclient.commond; import java.io.UnsupportedEncodingException; import com.alibaba.hsclient.Command; import com.alibaba.hsclient.bean.FilterInfo; import com.alibaba.hsclient.bean.InInfo; import com.alibaba.hsclient.bean.LimitInfo; import com.alibaba.hsclient.bean.ModInfo; import com.alibaba.hsclient.util.CompareOperator; import com.alibaba.hsclient.util.Const; import com.alibaba.hsclient.util.ModOperator; public class DeleteCommand implements Command{ private int indexId; private CompareOperator operator; private String[] fieldValues; private LimitInfo limitInfo; private InInfo inInfo; private FilterInfo[] filterInfos; private ModInfo modInfo; public DeleteCommand(int indexId, CompareOperator operator, String[] fieldValues, LimitInfo limitInfo, InInfo inInfo, FilterInfo[] filterInfos, ModInfo modInfo) { super(); this.indexId = indexId; this.operator = operator; this.fieldValues = fieldValues; this.limitInfo = limitInfo; this.inInfo = inInfo; this.filterInfos = filterInfos; this.modInfo = modInfo; } public int getIndexId() { return indexId; } public void setIndexId(int indexId) { this.indexId = indexId; } public CompareOperator getOperator() { return operator; } public void setOperator(CompareOperator operator) { this.operator = operator; } public String[] getFieldValues() { return fieldValues; } public void setFieldValues(String[] fieldValues) { this.fieldValues = fieldValues; } public LimitInfo getLimitInfo() { return limitInfo; } public void setLimitInfo(LimitInfo limitInfo) { this.limitInfo = limitInfo; } public InInfo getInInfo() { return inInfo; } public void setInInfo(InInfo inInfo) { this.inInfo = inInfo; } public FilterInfo[] getFilterInfos() { return filterInfos; } public void setFilterInfos(FilterInfo[] filterInfos) { this.filterInfos = filterInfos; } public ModInfo getModInfo() { return modInfo; } public void setModInfo(ModInfo modInfo) { this.modInfo = modInfo; } public byte[] toByte(String encoding) throws UnsupportedEncodingException { // <indexid> <op> <vlen> <v1> ... <vn> [LIM] [IN] [FILTER ...] MOD StringBuffer sb = new StringBuffer(); sb.append(this.getIndexId()).append(Const.TOKEN_SEPARATOR) .append(this.operator.getValue()).append(Const.TOKEN_SEPARATOR) .append(this.fieldValues.length).append(Const.TOKEN_SEPARATOR); for (String str : fieldValues) { sb.append(str).append(Const.TOKEN_SEPARATOR); } if (this.limitInfo != null) { sb.append(this.limitInfo.getLimit()) .append(Const.TOKEN_SEPARATOR) .append(this.limitInfo.getOffset()) .append(Const.TOKEN_SEPARATOR); } if (this.inInfo != null) { sb.append(this.inInfo.getInOperator()) .append(Const.TOKEN_SEPARATOR) .append(this.inInfo.getiCol()) .append(Const.TOKEN_SEPARATOR) .append(this.inInfo.getInValues().length) .append(Const.TOKEN_SEPARATOR); for (String str : this.inInfo.getInValues()) { sb.append(str).append(Const.TOKEN_SEPARATOR); } } if (this.filterInfos != null) { for (FilterInfo filterInfo : this.filterInfos) { sb.append(filterInfo.getfType()) .append(Const.TOKEN_SEPARATOR) .append(filterInfo.getfOp()) .append(Const.TOKEN_SEPARATOR) .append(filterInfo.getfCol()) .append(Const.TOKEN_SEPARATOR) .append(filterInfo.getfVal()) .append(Const.TOKEN_SEPARATOR); } } sb.append(ModOperator.D.getValue()); sb.append(Const.COMMAND_TERMINATE); return sb.toString().getBytes(encoding); } }