package org.t4f.msc.services;
import java.util.ArrayList;
import java.util.List;
import org.t4f.msc.model.Destination;
import org.t4f.msc.model.Message;
import org.t4f.msc.model.Subscriber;
import org.t4f.msc.model.SubscribersGroup;
import org.t4f.msc.pocsag.MessageProcessor;
import org.t4f.msc.pocsag.PocsagMessage;
public class MessageServices {
public boolean sendMessage(Message message) {
SubscriberServices subscriberServices = new SubscriberServices();
MessageProcessor messageProcessor = new MessageProcessor();
List<Subscriber> destinationList = new ArrayList<Subscriber>();
// Copy Subscribers checking for repited ones. Unfold Subscribers groups
for (Destination destination : message.getDestinationList()) {
if (destination instanceof Subscriber) {
if (!destinationList.contains(destination)) {
destinationList.add((Subscriber) destination);
}
} else if (destination instanceof SubscribersGroup) {
List<Subscriber> subscriberList = subscriberServices.findByGroupId(destination.getId());
for (Subscriber subscriber : subscriberList) {
if (!destinationList.contains(subscriber)) {
destinationList.add(subscriber);
}
}
}
}
// Create and enqueue pocsag messages
for (Subscriber subscriber:destinationList) {
PocsagMessage pocsagMessage = new PocsagMessage();
pocsagMessage.setMessage(message.getText());
pocsagMessage.setMsgType(PocsagMessage.MessageType.valueOf(message.getType().toString()));
pocsagMessage.setRIC(subscriber.getRIC());
pocsagMessage.setFrequency(subscriber.getFrequency());
pocsagMessage.setBauds(subscriber.getBauds());
messageProcessor.enqueuePocsagMessage(pocsagMessage);
}
return false;
}
}