package org.genedb.db.domain.hibernateImpls;
import org.genedb.db.domain.services.LockAndNotificationService;
import org.genedb.db.domain.services.LockStatus;
import org.genedb.db.domain.services.MessageService;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class LockAndNotificationServiceImpl implements LockAndNotificationService {
private MessageService messageService;
private Set<String> locks = new HashSet<String>();
private Map<String, ArrayList<String>> interested = new HashMap<String, ArrayList<String>>();
public LockStatus lockGene(String systematicId) {
if (!(locks.contains(systematicId))) {
locks.add(systematicId);
return new LockStatus(true);
}
return null;
}
public void unlockGene(String systematicId) {
locks.remove(systematicId);
}
public void notifyGene(String uniqueName, String string) {
if (interested.containsKey(uniqueName)) {
List<String> clients = new ArrayList<String>();
for (String clientName : clients) {
messageService.addNotification(clientName, "Gene Updated", string);
}
}
}
}