Package com.browseengine.bobo.service.impl

Source Code of com.browseengine.bobo.service.impl.BoboBrowseServiceImpl

package com.browseengine.bobo.service.impl;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;

import org.apache.log4j.Logger;

import proj.zoie.api.IndexReaderFactory;
import proj.zoie.api.ZoieIndexReader;

import com.browseengine.bobo.api.BoboBrowser;
import com.browseengine.bobo.api.BoboIndexReader;
import com.browseengine.bobo.api.Browsable;
import com.browseengine.bobo.api.BrowseException;
import com.browseengine.bobo.api.BrowseFacet;
import com.browseengine.bobo.api.BrowseRequest;
import com.browseengine.bobo.api.BrowseResult;
import com.browseengine.bobo.api.FacetAccessible;
import com.browseengine.bobo.api.MultiBoboBrowser;
import com.browseengine.bobo.service.BrowseService;
import com.browseengine.bobo.service.SerializedFacetAccessible;

public class BoboBrowseServiceImpl implements BrowseService {
  private static final Logger log = Logger.getLogger(BoboBrowseServiceImpl.class);
    private final IndexReaderFactory<ZoieIndexReader<BoboIndexReader>> _indexReaderFactory;
   
  public BoboBrowseServiceImpl(IndexReaderFactory<ZoieIndexReader<BoboIndexReader>> indexReaderFactory)
  {
    _indexReaderFactory=indexReaderFactory;
  }
 
  private Browsable buildBrowsable() throws IOException
  {
    List<ZoieIndexReader<BoboIndexReader>> readerList = _indexReaderFactory.getIndexReaders();
   
    ArrayList<Browsable> subBrowsableList = new ArrayList<Browsable>();
   
    for (ZoieIndexReader<BoboIndexReader> reader : readerList)
    {
      List<BoboIndexReader> boboReaders = reader.getDecoratedReaders();
      for (BoboIndexReader boboReader : boboReaders){
        subBrowsableList.add(new BoboBrowser(boboReader));
      }
    }
   
    MultiBoboBrowser multiBrowser = new MultiBoboBrowser(subBrowsableList.toArray(new Browsable[subBrowsableList.size()]));
   
    return multiBrowser;
  }
 
  public BrowseResult browse(BrowseRequest req) throws BrowseException {
    MultiBoboBrowser browsable = null;
    List<ZoieIndexReader<BoboIndexReader>> readerList = null;
    try
    {
      readerList = _indexReaderFactory.getIndexReaders();
      browsable = new MultiBoboBrowser(BoboBrowser.createBrowsables(ZoieIndexReader.extractDecoratedReaders(readerList)));
     
      BrowseResult res = browsable.browse(req);
     
      BrowseResult serializableResult = new BrowseResult();
      serializableResult.setHits(res.getHits());
      serializableResult.setNumHits(res.getNumHits());
      serializableResult.setTotalDocs(res.getTotalDocs());
      serializableResult.setTime(res.getTime());
     
      Map<String,FacetAccessible> facetMap = res.getFacetMap();
      Set<Entry<String,FacetAccessible>> entries = facetMap.entrySet();
      for (Entry<String,FacetAccessible> entry : entries)
      {
        List<BrowseFacet> facets = entry.getValue().getFacets();
        SerializedFacetAccessible facetAccessible = new SerializedFacetAccessible(facets);
        serializableResult.addFacets(entry.getKey(), facetAccessible);
      }
      return serializableResult;
    }
    catch(IOException ioe)
    {
      throw new BrowseException(ioe.getMessage(),ioe);
    }
    finally{
      try{
        if (browsable!=null){
        browsable.close();
        }
      }
      catch(Exception e){
        log.error(e.getMessage(),e);
      }
      finally{
        if (readerList!=null){
          _indexReaderFactory.returnIndexReaders(readerList);
        }
      }
    }
  }

  public void close() throws BrowseException {
   
  }
}
TOP

Related Classes of com.browseengine.bobo.service.impl.BoboBrowseServiceImpl

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.