package notification; import java.net.MalformedURLException; import java.net.URL; import play.Application; import play.Logger; import play.Play; import play.Plugin; import play.api.mvc.Call; import service.GuiceInjectionPlugin; import service.filestore.FileStore; import com.google.inject.Injector; public class NotificationManager extends Plugin { private final static String NOTIFICATION_EMAILS = "application.notification.emails"; private final Application application; private EmailNotificationScheduler scheduler; public NotificationManager(Application application) { this.application = application; } @Override public void onStart() { if(application.configuration().getBoolean( NOTIFICATION_EMAILS, Boolean.TRUE)) { scheduler = injector().getInstance((EmailNotificationScheduler.class)); scheduler.start(); } else { Logger.info(String.format( "No notifications emails are send (%s is false)", NOTIFICATION_EMAILS)); } } @Override public void onStop() { if(scheduler!=null) { scheduler.stop(); } } private Injector injector() { return GuiceInjectionPlugin.getInjector(application); } public static String absUrl(FileStore.FileOrFolder fof) { try { URL baseUrl = new URL( Play.application().configuration().getString("application.baseUrl")); return (new URL(baseUrl, getCall(fof).url())).toString(); } catch (MalformedURLException e) { throw new RuntimeException(e); } } private static Call getCall(FileStore.FileOrFolder fof) { final String id = fof.getIdentifier(); if (fof instanceof FileStore.File) { return controllers.routes.FileStoreController.showFile(id); } else { return controllers.routes.FileStoreController.showFolder(id); } } }