/*
* Copyright Massimiliano Dessi (desmax74@yahoo.it)
*
* Licensed under Apache License Version 2.0
* (http://www.apache.org/licenses/LICENSE-2.0),
*
* for commercial use, under
* GNU General Public License Version 2 or later (the "GPL")
* http://www.gnu.org/licenses/gpl.html
*/
package org.magicbox.service;
import org.magicbox.domain.Annuncio;
import org.magicbox.dto.Email;
import org.magicbox.dto.Envelope;
import org.magicbox.service.scheduling.MailQueueImpl;
import org.magicbox.service.scheduling.SmsQueue;
/**
* Pubblicazioni facade (da terminare)
*
* @author Massimiliano Dessì (desmax74@yahoo.it)
* @since jdk 1.6.0
* @version 3.0
*/
public class PubblicazioniFacadeImpl implements PubblicazioniFacade {
public void inviaMail(Envelope busta) {
if (busta.getInseritiHidden().length() == 0) {
inviaMailCentro(busta.getAnnuncio());
} else {
// recupero gli inseritiHidden
}
}
public void inviaSms(Envelope busta) {
if (busta.getInseritiHidden().length() == 0) {
inviaSmsCentro(busta.getAnnuncio());
} else {
// recupero gli inseritiHidden
}
}
public void pubblicaRss(Annuncio annuncio) {
annunciService.insertAnnuncio(annuncio);
}
private void inviaMailCentro(Annuncio annuncio) {
// List listaMail = recapitiService.getListaMailCentro(annuncio.getCentro());
annunciService.insertAnnuncio(annuncio);
}
private void inviaSmsCentro(Annuncio annuncio) {
// List listaCellulari = recapitiService.getListaCellulariCentro(annuncio.getCentro());
annunciService.insertAnnuncio(annuncio);
}
public void accodaMail(String to, String toMail, String oggettoMail, String msg) {
mailQueue.aggiungi(new Email(to, toMail, oggettoMail, msg));
}
public void smaltisciCodaMail() {
if (!mailQueue.isVuota()) {
int dimensioneCoda = mailQueue.size();
for (int i = 0; i < dimensioneCoda; i++) {
// la prima nella codsa � la pi� vecchia all'interno della coda
Email mail = mailQueue.restituisciPrimaMail();
if (!spedisciMailPerSingoloUtente(mail)) {
// se la spedizione non � andata bene la rimetto in coda
mailQueue.aggiungi(mail);
}
}
}
}
public void setAnnunciService(AnnunciService annunciService) {
this.annunciService = annunciService;
}
private boolean spedisciMailPerSingoloUtente(Email mail) {
return mailSender.spedisciSingolaEmailSemplice(mail);
}
public void setRecapitiService(RecapitiService recapitiService) {
this.recapitiService = recapitiService;
}
public void setMailSender(MailSender mailSender) {
this.mailSender = mailSender;
}
public void setMailQueue(MailQueueImpl mailQueue) {
this.mailQueue = mailQueue;
}
public void setSmsQueue(SmsQueue smsQueue) {
this.smsQueue = smsQueue;
}
private MailSender mailSender;
private RecapitiService recapitiService;
private MailQueueImpl mailQueue;
private SmsQueue smsQueue;
private AnnunciService annunciService;
}