/*
* $Id$
* $URL$
*/
package org.subethamail.plugin.blueprint;
import java.util.HashSet;
import java.util.Set;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.subethamail.common.NotFoundException;
import org.subethamail.core.lists.i.ListMgr;
import org.subethamail.core.plugin.i.Blueprint;
import org.subethamail.entity.i.Permission;
import org.subethamail.entity.i.PermissionException;
import org.subethamail.plugin.filter.AppendFooterFilter;
import org.subethamail.plugin.filter.ListHeaderFilter;
import org.subethamail.plugin.filter.ReplyToFilter;
/**
* Creates a list suitable for a publicly advertised technical list.
*
* @author Jeff Schnitzer
* @author Jon Stevens
* @author Scott Hernandez
*/
@Singleton
public class TechnicalBlueprint implements Blueprint
{
@Inject ListMgr listMgr;
/** */
public String getName()
{
return "Technical List";
}
/** */
public String getDescription()
{
return
"Create a list suitable for public technical support. Anyone can " +
" subscribe and view archives, but email addresses are hidden from" +
" nonsubscribers to avoid poaching by spam bots. By default replies" +
" go back to the list and the subscriber list is only available to" +
" the list owner(s).";
}
/** */
public void configureMailingList(Long listId)
{
try
{
// Subscriber
Set<Permission> perms = new HashSet<Permission>();
perms.add(Permission.POST);
perms.add(Permission.VIEW_ARCHIVES);
perms.add(Permission.VIEW_ADDRESSES);
Long roleId = listMgr.addRole(listId, "Subscriber", perms);
listMgr.setDefaultRole(listId, roleId);
// Guest
perms = new HashSet<Permission>();
perms.add(Permission.VIEW_ARCHIVES);
roleId = listMgr.addRole(listId, "Guest", perms);
listMgr.setAnonymousRole(listId, roleId);
// Add a couple useful footers
listMgr.setFilterDefault(listId, AppendFooterFilter.class.getName());
listMgr.setFilterDefault(listId, ListHeaderFilter.class.getName());
listMgr.setFilterDefault(listId, ReplyToFilter.class.getName());
}
catch (PermissionException pe)
{
throw new RuntimeException(pe);
}
catch (NotFoundException nfe)
{
throw new RuntimeException(nfe);
}
}
}