package org.handwerkszeug.riak.mapreduce.internal; import java.io.IOException; import org.codehaus.jackson.JsonGenerator; import org.handwerkszeug.riak.util.JsonAppender; /** * @author taichi */ public class MapReducePhase implements JsonAppender { public enum PhaseType { map, reduce, link; } final PhaseType phaseType; Boolean keep; final JsonAppender phase; public MapReducePhase(PhaseType type, JsonAppender phase) { this.phaseType = type; this.phase = phase; } public MapReducePhase(PhaseType type, boolean keep, JsonAppender phase) { this(type, phase); this.keep = keep; } public void mayBeKeep(boolean is) { this.keep = this.keep == null ? is : this.keep; } @Override public void appendTo(JsonGenerator generator) throws IOException { generator.writeStartObject(); generator.writeFieldName(this.phaseType.name()); generator.writeStartObject(); this.phase.appendTo(generator); if (this.keep) { generator.writeBooleanField("keep", this.keep); } generator.writeEndObject(); generator.writeEndObject(); } }