package org.fastcatsearch.vo;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.fastcatsearch.ir.io.DataInput;
import org.fastcatsearch.ir.io.DataOutput;
public class CollectionAnalyzedIndexData extends CollectionIndexData {
private List<RowData> pkData;
private List<RowData> analyzedData;
public CollectionAnalyzedIndexData() {}
public CollectionAnalyzedIndexData(String collectionId, int documentSize, List<String> fieldList, List<RowData> pkData, List<RowData> indexData, List<RowData> analyzedData, List<Boolean> isDeletedList) {
super(collectionId, documentSize, fieldList, indexData, isDeletedList);
this.pkData = pkData;
this.analyzedData = analyzedData;
}
public List<RowData> getPkData() {
return pkData;
}
public void setPkData(List<RowData> pkData) {
this.pkData = pkData;
}
public List<RowData> getAnalyzedData() {
return analyzedData;
}
public void setAnalyzedData(List<RowData> analyzedData) {
this.analyzedData = analyzedData;
}
@Override
public void readFrom(DataInput input) throws IOException {
super.readFrom(input);
int fieldSize = fieldList.size();
int pkRowSize = input.readVInt();
if(pkRowSize > 0) {
int pkFieldSize = input.readVInt();
pkData = new ArrayList<RowData>(pkRowSize);
for (int r = 0; r < pkRowSize; r++) {
String[][] data = new String[pkFieldSize][];
for (int i = 0; i < pkFieldSize; i++) {
data[i] = new String[] { input.readString(), input.readString() };
}
RowData rowData = new RowData("", data);
pkData.add(rowData);
}
}
int analyzedRowSize = input.readVInt();
if(analyzedRowSize > 0) {
analyzedData = new ArrayList<RowData>(analyzedRowSize);
for (int r = 0; r < analyzedRowSize; r++) {
String[][] fieldData = new String[fieldSize][];
for (int i = 0; i < fieldSize; i++) {
fieldData[i] = new String[] { input.readString(), input.readString() };
}
RowData rowData = new RowData("", fieldData);
analyzedData.add(rowData);
}
}
}
@Override
public void writeTo(DataOutput output) throws IOException {
super.writeTo(output);
if(pkData != null && pkData.size() > 0) {
output.writeVInt(pkData.size());
int pkFieldSize = pkData.get(0).getFieldData().length;
output.writeVInt(pkFieldSize);
for(RowData rowData : pkData) {
String[][] fieldData = rowData.getFieldData();
for(int i = 0; i < fieldData.length; i++) {
output.writeString(fieldData[i][0]);
output.writeString(fieldData[i][1]);
}
}
}else{
output.writeVInt(0);
}
if(analyzedData != null && analyzedData.size() > 0) {
output.writeVInt(analyzedData.size());
for(RowData rowData : analyzedData) {
String[][] fieldData = rowData.getFieldData();
for(int i = 0; i < fieldData.length; i++) {
output.writeString(fieldData[i][0]);
output.writeString(fieldData[i][1]);
}
}
}else{
output.writeVInt(0);
}
}
}