/** *Copyright [2010-2011] [dennis zhuang(killme2008@gmail.com)] *Licensed under the Apache License, Version 2.0 (the "License"); *you may not use this file except in compliance with the License. *You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 *Unless required by applicable law or agreed to in writing, *software distributed under the License is distributed on an "AS IS" BASIS, *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, *either express or implied. See the License for the specific language governing permissions and limitations under the License */ package com.google.code.hs4j.command.text; import com.google.code.hs4j.network.buffer.IoBuffer; import com.google.code.hs4j.utils.HSUtils; /** * Open index command * * @author dennis * @date 2010-11-27 */ public class OpenIndexCommand extends AbstractCommand { private static final String[] EMPTY= new String[0]; private final String id; private final String db; private final String tableName; private final String indexName; private final String[] fieldList; private final String[] filterFieldList; public OpenIndexCommand(String id, String db, String tableName, String indexName, String[] fieldList) { this(id, db, tableName, indexName, fieldList, null); } public OpenIndexCommand(String id, String db, String tableName, String indexName, String[] fieldList, String[] filterFieldList) { super(); this.id = id; this.db = db; this.tableName = tableName; this.indexName = indexName; this.fieldList = fieldList; if(filterFieldList != null){ this.filterFieldList = filterFieldList; }else{ this.filterFieldList = EMPTY; } } public void encode() { byte [][]fieldBytes=HSUtils.getByteArrayFromStringArray(this.fieldList, this.encoding); IoBuffer buf = IoBuffer.allocate(2 + this.id.length() + 1 + this.db.length() + 1 + this.tableName.length() + 1 + this.indexName.length() + 1 + this.length(fieldBytes) + this.fieldList.length+ this.fieldList.length); buf.setAutoExpand(true); // header this.writeToken(buf, OPERATOR_OPEN_INDEX); this.writeTokenSeparator(buf); // id this.writeToken(buf, this.id); this.writeTokenSeparator(buf); // db name this.writeToken(buf, this.db); this.writeTokenSeparator(buf); // tableName this.writeToken(buf, this.tableName); this.writeTokenSeparator(buf); // indexName this.writeToken(buf, this.indexName); this.writeTokenSeparator(buf); // field list this.writeToken(buf, join(this.fieldList)); // filter field list if(filterFieldList.length != 0) { this.writeTokenSeparator(buf); this.writeToken(buf, join(this.filterFieldList)); this.writeCommandTerminate(buf); }else{ this.writeCommandTerminate(buf); } buf.flip(); this.buffer = buf; } }