package net.lr.tutorial.karaf.vote.service;
import java.util.HashMap;
import java.util.Map;
import javax.ws.rs.core.Link;
import javax.ws.rs.core.Response;
import net.lr.tutorial.karaf.vote.model.Vote;
import net.lr.tutorial.karaf.vote.model.VoteService;
import net.lr.tutorial.karaf.vote.model.Voting;
public class MemoryVoteService implements VoteService {
Map<String, Voting> votingMap;
public MemoryVoteService() {
this.votingMap = new HashMap<String, Voting>();
addVote("test1", 1);
}
@Override
public Voting getVoting(String topic) {
if (this.votingMap.containsKey(topic)) {
return votingMap.get(topic);
} else {
Voting voting = new Voting(topic);
this.votingMap.put(topic, voting);
return voting;
}
}
@Override
public Voting removeVoting(String topic) {
return this.votingMap.remove(topic);
}
@Override
public void addVote(String topic, int voteNum) {
getVoting(topic).addVote(new Vote(topic, voteNum));
}
@Override
public Response getVotings() {
Link[] links = new Link[votingMap.size()];
int c = 0;
for (Voting voting : votingMap.values()) {
links[c++] = Link.fromResourceMethod(VoteService.class, "getVoting", voting.getTopic()).build();
}
return Response.ok().links(links).build();
}
@Override
public void addVote(Vote vote) {
if (vote != null) {
getVoting(vote.getTopic()).addVote(vote);
}
}
@Override
public String getStats(String topic) {
return getVoting(topic).getStats();
}
}