Package com.senseidb.test.plugin

Source Code of com.senseidb.test.plugin.VirtualGroupIdFactory

/**
* This software is licensed to you under the Apache License, Version 2.0 (the
* "Apache License").
*
* LinkedIn's contributions are made under the Apache License. If you contribute
* to the Software, the contributions will be deemed to have been made under the
* Apache License, unless you expressly indicate otherwise. Please do not make any
* contributions that would be inconsistent with the Apache License.
*
* You may obtain a copy of the Apache License at http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, this software
* distributed under the Apache License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the Apache
* License for the specific language governing permissions and limitations for the
* software governed under the Apache License.
*
* © 2012 LinkedIn Corp. All Rights Reserved. 
*/

package com.senseidb.test.plugin;

import java.util.HashSet;
import java.util.Map;

import com.browseengine.bobo.api.BoboIndexReader;
import com.browseengine.bobo.facets.data.FacetDataCache;
import com.browseengine.bobo.facets.data.FacetDataFetcher;
import com.browseengine.bobo.facets.data.PredefinedTermListFactory;
import com.browseengine.bobo.facets.data.TermFixedLengthLongArrayListFactory;
import com.browseengine.bobo.facets.impl.VirtualSimpleFacetHandler;
import com.senseidb.plugin.SenseiPluginFactory;
import com.senseidb.plugin.SenseiPluginRegistry;

import proj.zoie.api.ZoieIndexReader;

public class VirtualGroupIdFactory implements SenseiPluginFactory<VirtualSimpleFacetHandler> {
  @Override
  public VirtualSimpleFacetHandler getBean(Map<String, String> initProperties, String fullPrefix,
      SenseiPluginRegistry pluginRegistry) {
    //the decision also can be made by the full prefix
    if ("default".equals(initProperties.get("typeProp"))) {
      HashSet<String> depends = new HashSet<String>();
      depends.add("groupid");
      return new VirtualSimpleFacetHandler("virtual_groupid", new PredefinedTermListFactory(Long.class, "00000000000000000000000000000000000"), facetDataFetcher, depends);
    }
    if ("fixedlengthlongarray".equals(initProperties.get("typeProp"))) {
      HashSet<String> depends = new HashSet<String>();
      depends.add("groupid");
      return new VirtualSimpleFacetHandler("virtual_groupid_fixedlengthlongarray", new TermFixedLengthLongArrayListFactory(2), facetDataFetcherFixedLengthLongArray, depends);
    }
    return null;
  }



  public static FacetDataFetcher facetDataFetcher = new FacetDataFetcher()
  {
    @Override
    public Object fetch(BoboIndexReader reader, int doc)
    {
      FacetDataCache dataCache = (FacetDataCache)reader.getFacetData("groupid");
      long ret =  (Long) dataCache.valArray.getRawValue(dataCache.orderArray.get(doc));
      if (ret < 0) ret *= -1;
      return ret;
    }

    @Override
    public void cleanup(BoboIndexReader reader)
    {
    }
  };

  public static class GroupIdFetcherFactory implements SenseiPluginFactory<FacetDataFetcher>
  {
    public FacetDataFetcher getBean(Map<String, String> initProperties,
                                    String fullPrefix,
                                    SenseiPluginRegistry pluginRegistry)
    {
      return VirtualGroupIdFactory.facetDataFetcher;
    }
  }

  public static FacetDataFetcher facetDataFetcherFixedLengthLongArray = new FacetDataFetcher()
  {
    @Override
    public Object fetch(BoboIndexReader reader, int doc)
    {
      long uid = ((ZoieIndexReader)reader.getInnerReader()).getUID(doc);
      long[] val = new long[2];
      val[0] = uid;
      if (uid%4 == 1) val[0] = val[0] - 1;
      if (uid%4 == 2) val[0] = val[0] - 2;
      val[1] = uid/10;
     
      return val;
    }

    @Override
    public void cleanup(BoboIndexReader reader)
    {
    }
  };
}
TOP

Related Classes of com.senseidb.test.plugin.VirtualGroupIdFactory

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.
[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-20639858-1', 'auto'); ga('send', 'pageview');