package com.rayo.storage.riak;
import java.util.Collection;
import org.codehaus.jackson.annotate.JsonCreator;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonProperty;
import com.basho.riak.client.RiakLink;
import com.basho.riak.client.convert.RiakKey;
import com.basho.riak.client.convert.RiakLinks;
import com.rayo.server.storage.model.GatewayMixer;
public class RiakMixer {
@RiakKey
private String name;
@JsonProperty
private String rayoNode;
@RiakLinks
private transient Collection<RiakLink> callLinks;
public RiakMixer(GatewayMixer call) {
this.name = call.getName();
this.rayoNode = call.getNodeJid();
}
@JsonCreator
public RiakMixer(@JsonProperty("name") String name) {
this.name = name;
}
@JsonIgnore
public GatewayMixer getGatewayMixer() {
GatewayMixer mixer = new GatewayMixer(name, rayoNode);
if (callLinks != null) {
for (RiakLink link: callLinks) {
mixer.addCall(link.getKey());
}
}
return mixer;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRayoNode() {
return rayoNode;
}
public void setRayoNode(String rayoNode) {
this.rayoNode = rayoNode;
}
public void addCall(String callId) {
callLinks.add(new RiakLink("calls", callId, "calls"));
}
public void removeCall(String callId) {
callLinks.remove(new RiakLink("calls", callId, "calls"));
}
public Collection<RiakLink> getCallLinks() {
return callLinks;
}
public void setCallLinks(Collection<RiakLink> callLinks) {
this.callLinks = callLinks;
}
}