Package com.browseengine.bobo.service

Source Code of com.browseengine.bobo.service.BrowseHitConverter

package com.browseengine.bobo.service;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import com.browseengine.bobo.api.BrowseHit;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;

/**
* Marshaling code for #BrowseHit
*/
public class BrowseHitConverter implements Converter {

  public void marshal(Object obj, HierarchicalStreamWriter writer,
      MarshallingContext ctx) {
    writer.startNode("hit");
    BrowseHit hit=(BrowseHit)obj;
    writer.addAttribute("score", String.valueOf(hit.getScore()));
    writer.addAttribute("docid", String.valueOf(hit.getDocid()));

   
    Map<String,String[]> fieldVals=hit.getFieldValues();
    writer.addAttribute("numfields", fieldVals==null ? "0" : String.valueOf(fieldVals.size()));
   
    if (fieldVals!=null)
    {
     
      Iterator<String> iter=fieldVals.keySet().iterator();
      while(iter.hasNext()){
        String name=iter.next();
        writer.startNode(name);
        writer.setValue(Arrays.toString(fieldVals.get(name)));
        writer.endNode();
      }
    }
    writer.endNode();
  }

  public Object unmarshal(HierarchicalStreamReader reader,
      UnmarshallingContext ctx) {
    BrowseHit hit=new BrowseHit();
    reader.moveDown();
    String scoreString=reader.getAttribute("score");
    if (scoreString!=null){
      hit.setScore(Float.parseFloat(scoreString));
    }
    String docidString=reader.getAttribute("docid");
    if (docidString!=null){
      hit.setDocid(Integer.parseInt(docidString));
    }
   
    int numFields=0;
    String fieldCountString=reader.getAttribute("numfields");
    if (fieldCountString!=null){
      numFields=Integer.parseInt(fieldCountString);
    }
   
    Map<String,String[]> fieldVals=new HashMap<String,String[]>();
    hit.setFieldValues(fieldVals);
    for (int i=0;i<numFields;++i){
      reader.moveDown();
      String fieldname=reader.getNodeName();
      String fieldval = reader.getValue();
      String s2=fieldval.substring(1,fieldval.length()-1);
      String[] parts=s2.split(", ");
      fieldVals.put(fieldname, parts);
      reader.moveUp();
    }
    reader.moveUp();
    return hit;
  }

  public boolean canConvert(Class clazz) {
    return BrowseHit.class.equals(clazz);
  }
}
TOP

Related Classes of com.browseengine.bobo.service.BrowseHitConverter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.