package polly.linkexpander;
import java.util.Set;
import java.util.TreeSet;
import polly.linkexpander.commands.LinkGrabberCommand;
import polly.linkexpander.core.LinkGrabberManager;
import polly.linkexpander.core.LinkGrabberMessageListener;
import polly.linkexpander.core.grabbers.MemecenterLinkGrabber;
import polly.linkexpander.core.grabbers.NineGagLinkGrabber;
import polly.linkexpander.core.grabbers.PhpBBLinkGrabber;
import polly.linkexpander.core.grabbers.URLLinkGrabber;
import polly.linkexpander.core.grabbers.YouTubeLinkGrabber;
import de.skuzzle.polly.sdk.MyPolly;
import de.skuzzle.polly.sdk.PollyPlugin;
import de.skuzzle.polly.sdk.eventlistener.MessageListener;
import de.skuzzle.polly.sdk.exceptions.DatabaseException;
import de.skuzzle.polly.sdk.exceptions.DisposingException;
import de.skuzzle.polly.sdk.exceptions.DuplicatedSignatureException;
import de.skuzzle.polly.sdk.exceptions.IncompatiblePluginException;
import de.skuzzle.polly.sdk.exceptions.RoleException;
import de.skuzzle.polly.sdk.roles.RoleManager;
public class MyPlugin extends PollyPlugin {
public final static String GRABBER_PERMISSION = "polly.permission.LINK_GRABBER"; //$NON-NLS-1$
private LinkGrabberManager linkGrabberManager;
private MessageListener linkGrabber;
public MyPlugin(MyPolly myPolly) throws IncompatiblePluginException,
DuplicatedSignatureException {
super(myPolly);
this.linkGrabberManager = new LinkGrabberManager();
this.linkGrabber = new LinkGrabberMessageListener(this.linkGrabberManager);
myPolly.irc().addMessageListener(this.linkGrabber);
this.addCommand(new LinkGrabberCommand(myPolly, this.linkGrabberManager));
this.linkGrabberManager.addLinkGrabber(new YouTubeLinkGrabber());
this.linkGrabberManager.addLinkGrabber(new PhpBBLinkGrabber());
this.linkGrabberManager.addLinkGrabber(new NineGagLinkGrabber());
this.linkGrabberManager.addLinkGrabber(new MemecenterLinkGrabber());
final URLLinkGrabber urlLinkGrabber = new URLLinkGrabber();
this.linkGrabberManager.addLinkGrabber(urlLinkGrabber);
}
@Override
public Set<String> getContainedPermissions() {
final TreeSet<String> result = new TreeSet<String>();
result.add(GRABBER_PERMISSION);
result.addAll(super.getContainedPermissions());
return result;
}
@Override
public void assignPermissions(RoleManager roleManager)
throws RoleException, DatabaseException {
roleManager.assignPermission(RoleManager.ADMIN_ROLE, GRABBER_PERMISSION);
}
@Override
protected void actualDispose() throws DisposingException {
super.actualDispose();
this.getMyPolly().irc().removeMessageListener(this.linkGrabber);
}
}