blob: ca97d52d3203d04da8b16af409d92b8bac1910e8 [file] [log] [blame]
package de.ids_mannheim.korap.collection;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Map;
/**
* Virtual corpus data to cache
*
* @author margaretha
*
*/
public class CachedVCData implements Serializable {
/**
* Auto generated
*
*/
private static final long serialVersionUID = 5635087441839303653L;
private Map<Integer, DocBits> docIdMap;
public CachedVCData (Map<Integer, DocBits> docIdMap) {
this.docIdMap = docIdMap;
}
public Map<Integer, DocBits> getDocIdMap () {
return docIdMap;
}
public void setDocIdMap (Map<Integer, DocBits> docIdMap) {
this.docIdMap = docIdMap;
}
// EM: for optimization. has not been checked.
// ehcache retrieves a byte[] much faster than a map, however,
// there is an additional cost for converting a map to a byte[]
// and vice versa.
private byte[] toByteArray () throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(docIdMap);
oos.flush();
return bos.toByteArray();
}
private Map<Integer, DocBits> toMap (byte[] bytes)
throws ClassNotFoundException, IOException {
ByteArrayInputStream bis = null;
ObjectInputStream ois = null;
Map<Integer, DocBits> map = null;
try {
bis = new ByteArrayInputStream(bytes);
ois = new ObjectInputStream(bis);
map = (Map<Integer, DocBits>) ois.readObject();
}
finally {
if (bis != null) {
bis.close();
}
if (ois != null) {
ois.close();
}
}
return map;
}
public String toString () {
return this.docIdMap.toString();
}
}