package spimedb.graph;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.eclipse.collections.impl.list.mutable.FastList;
import spimedb.util.JSON;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
/**
* Created by me on 1/19/17.
*/
@JsonSerialize(using = VertexIncidence.Serializer.class)
public class VertexIncidence<V> implements Serializable {
@JsonProperty(">")
public final List<V> in = new FastList();
@JsonProperty("<")
public final List<V> out = new FastList();
static class Serializer extends JsonSerializer<VertexIncidence> {
@Override public void serialize(VertexIncidence x, JsonGenerator gen, SerializerProvider serializers) throws IOException {
boolean inEmpty = x.in.isEmpty();
boolean outEmpty = x.out.isEmpty();
if (!inEmpty || !outEmpty) {
gen.writeStartObject();
if (!inEmpty)
gen.writeObjectField(">", x.in);
if (!outEmpty)
gen.writeObjectField("<", x.out);
gen.writeEndObject();
} else {
gen.writeNull();
}
}
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}