Package com.twitter.summingbird.memory.javaapi

Source Code of com.twitter.summingbird.memory.javaapi.JMemory

package com.twitter.summingbird.memory.javaapi;

import java.util.List;
import java.util.Map;

import scala.Function1;
import scala.Option;
import scala.collection.JavaConversions;
import scala.collection.TraversableOnce;
import scala.runtime.AbstractFunction1;

import com.twitter.summingbird.javaapi.Function;
import com.twitter.summingbird.javaapi.JProducer;
import com.twitter.summingbird.javaapi.JProducers;
import com.twitter.summingbird.javaapi.JTailProducer;
import com.twitter.summingbird.javaapi.Service;
import com.twitter.summingbird.javaapi.Sink;
import com.twitter.summingbird.javaapi.Source;
import com.twitter.summingbird.javaapi.Store;
import com.twitter.summingbird.javaapi.impl.JProducerImpl;
import com.twitter.summingbird.memory.Memory;
import com.twitter.summingbird.option.JobId;

/**
* Wrapper of the Memory platform to use in Java
* @author Julien Le Dem
*
*/
public class JMemory {

  private final JobId jobId;
  private final Memory platform;

  /**
   * @param jobId
   */
  public JMemory(JobId jId) {
    jobId = jId;
    platform = new Memory(jobId);
  }

  private static <IN> Function1<IN, Void> toScala(final JSink<IN> f) {
    return new AbstractFunction1<IN, Void>() {
      @Override
      public Void apply(IN v) {
        f.write(v);
        return null;
      }
    };
  }

  /**
   * @param source
   * @return the corresponding JProducer
   */
  public static <T> JProducer<Memory, T> source(Iterable<T> source) {
    return JProducers.source(new Source<Memory, TraversableOnce<T>, T>(JavaConversions.iterableAsScalaIterable(source)));
  }

  /**
   * @param store
   * @return the corresponding Store to use in JKeyedProducer.sumByKey
   */
  public static <K,V> Store<Memory, scala.collection.mutable.Map<K, V>, K, V> store(Map<K, V> store) {
    return new Store<Memory, scala.collection.mutable.Map<K, V>, K, V>(JavaConversions.asScalaMap(store));
  }

  /**
   * @param sink
   * @return the corresponding Sink to use in JProducer.write
   */
  public static <T> Sink<Memory, Function1<T, Void>, T> sink(JSink<T> sink) {
    return new Sink<Memory, Function1<T, Void>, T>(toScala(sink));
  }

  /**
   * @param service
   * @return the corresponding Service to use in JProducer.lookup
   */
  public static <K,V> Service<Memory, Function1<K, Option<V>>, K, V> service(Function<K, Option<V>> service) {
    return new Service<Memory, Function1<K, Option<V>>, K, V>(JProducerImpl.toScala(service));
  }


  /**
   * @param tail
   * @return the planed producer
   */
  public <T> List<T> plan(JTailProducer<Memory, T> tail) {
    return JavaConversions.asJavaList(platform.plan(tail.unwrap()));
  }

}
TOP

Related Classes of com.twitter.summingbird.memory.javaapi.JMemory

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.