Skip to content

Instantly share code, notes, and snippets.

@pasadinhas
Created April 2, 2017 15:47
Show Gist options
  • Select an option

  • Save pasadinhas/d59f3d3de68bd1d4b0310f8b32c9e992 to your computer and use it in GitHub Desktop.

Select an option

Save pasadinhas/d59f3d3de68bd1d4b0310f8b32c9e992 to your computer and use it in GitHub Desktop.
package pt.ist.fenix.webapp;
import org.fenixedu.academic.domain.Installation;
import org.fenixedu.academic.domain.util.email.CoordinatorSender;
import org.fenixedu.academic.domain.util.email.ExecutionCourseSender;
import org.fenixedu.academic.domain.util.email.PersonSender;
import org.fenixedu.academic.domain.util.email.Sender;
import org.fenixedu.bennu.core.domain.Bennu;
import org.fenixedu.bennu.core.groups.Group;
import org.fenixedu.bennu.scheduler.custom.CustomTask;
import org.fenixedu.messaging.core.domain.MessageStoragePolicy;
import java.util.Collection;
import java.util.Set;
import java.util.stream.Collectors;
public class MigrateSenders extends CustomTask {
@Override
public void runTask() throws Exception {
Bennu bennu = Bennu.getInstance();
Set<Sender> senders = bennu.getUtilEmailSendersSet();
senders.stream()
.forEach(s -> {
// Fetch generic data from sender
String from = s.getFromAddress();
String as = s.getFromAddress();
Group members = s.getMembers();
MessageStoragePolicy storagePolicy = MessageStoragePolicy.internalize("A");
boolean htmlEnabled = false;
String replyTo = Installation.getInstance().getInstituitionalEmailAddress("noreply");
Collection<Group> recipients =
s.getRecipientsSet().stream().map(r -> r.getMembers()).collect(Collectors.toSet());
// Fetch specific information from sender
// TODO: decide on the default replyTo
if (s instanceof ExecutionCourseSender) {
} else if (s instanceof PersonSender) {
replyTo = ((PersonSender) s).getPerson().getDefaultEmailAddressValue();
} else if (s instanceof CoordinatorSender) {
}
// Create new sender
org.fenixedu.messaging.core.domain.Sender sender =
org.fenixedu.messaging.core.domain.Sender.from(from).as(as).members(members)
.storagePolicy(storagePolicy).htmlEnabled(htmlEnabled).replyTo(replyTo).recipients(recipients)
.build();
// Link new sender to the respective owner
// TODO: still missing DelegateSender
if (s instanceof PersonSender) {
((PersonSender) s).getPerson().setEmailSender(sender);
} else if (s instanceof ExecutionCourseSender) {
((ExecutionCourseSender) s).getCourse().setEmailSender(sender);
} else if (s instanceof CoordinatorSender) {
((CoordinatorSender) s).getDegree().setEmailSender(sender);
}
System.out.print(".");
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment