package org.handwerkszeug.riak.model;
import static org.handwerkszeug.riak.util.Validation.notNull;
import java.io.IOException;
import org.codehaus.jackson.JsonGenerator;
public abstract class Erlang extends Function {
protected String module;
protected String function;
protected Erlang(String module, String function) {
super(Language.erlang);
this.module = module;
this.function = function;
}
public String getModule() {
return this.module;
}
public String getFunction() {
return this.function;
}
public static Erlang newFunction(String module, final String function) {
notNull(module, "module");
notNull(function, "function");
return new Erlang(module, function) {
@Override
protected void appendBody(JsonGenerator generator)
throws IOException {
// TODO pre/post commit Erlang function
// json.put("mod", this.getModule());
// json.put("fun", this.getFunction());
generator.writeStringField("module", this.module);
generator.writeStringField("function", this.function);
}
};
}
public static Erlang riak_kv_mapreduce(String function) {
return newFunction("riak_kv_mapreduce", function);
}
/*
* BuiltIn Functions
*/
public static final Erlang map_identity = riak_kv_mapreduce("map_identity");
public static final Erlang map_object_value = riak_kv_mapreduce("map_object_value");
public static final Erlang map_object_value_list = riak_kv_mapreduce("map_object_value_list");
public static final Erlang reduce_identity = riak_kv_mapreduce("reduce_identity");
public static final Erlang reduce_set_union = riak_kv_mapreduce("reduce_set_union");
public static final Erlang reduce_sort = riak_kv_mapreduce("reduce_sort");
public static final Erlang reduce_string_to_integer = riak_kv_mapreduce("reduce_string_to_integer");
public static final Erlang reduce_sum = riak_kv_mapreduce("reduce_sum");
public static final Erlang reduce_plist_sum = riak_kv_mapreduce("reduce_plist_sum");
public static final Erlang reduce_count_inputs = riak_kv_mapreduce("reduce_count_inputs");
public static final Erlang riakSearch = newFunction("riak_search",
"mapred_search");
}