package guang.crawler.siteManager.jobQueue; import guang.crawler.commons.WebURL; import com.alibaba.fastjson.JSON; import com.sleepycat.bind.tuple.TupleInput; import com.sleepycat.bind.tuple.TupleOutput; import com.sleepycat.je.DatabaseEntry; /** * WebURL类的转换器.将WebURL对象转换成BerkelyDB中可以使用的数据类型 * * @author sun * */ public class WebURLTransfer extends JEQueueElementTransfer<WebURL> { /** * 将数据库中的一个输入数据转换成WebURL对象 */ @Override public WebURL entryToObject(final TupleInput input) { String jsonString = input.readString(); WebURL webURL = JSON.parseObject(jsonString, WebURL.class); return webURL; } /** * 从WebURL对象中获取主键,并转化为BerkeleyDB中的数据对象. */ @Override public DatabaseEntry getDatabaseEntryKey(final WebURL data) { byte[] keyData = data.getDocid() .getBytes(); return new DatabaseEntry(keyData); } /** * 将一个WebURL对象输出到数据库中的数据对象中. */ @Override public void objectToEntry(final WebURL url, final TupleOutput output) { String jsonString = JSON.toJSONString(url); output.writeString(jsonString); } }