package com.openseedbox.jobs.torrent; import com.openseedbox.Config; import com.openseedbox.code.MessageException; import com.openseedbox.jobs.LoggedJob; import com.openseedbox.models.Torrent; import com.openseedbox.models.TorrentEvent; import com.openseedbox.models.TorrentEvent.TorrentEventType; import com.openseedbox.models.User; import com.openseedbox.models.UserTorrent; public class RemoveTorrentJob extends LoggedJob<TorrentEvent> { private String hash; private TorrentEvent event; private User user; public RemoveTorrentJob(String hash, long userId) { event = new TorrentEvent(TorrentEventType.REMOVING, user); event.setTorrentHash(hash); this.user = User.findById(userId); this.hash = hash; } @Override protected TorrentEvent getJobEvent() { return event; } @Override protected Object doGenericJob() throws Exception { if (Config.isTestMode()) { sleep(2); //add in some lag to simulate slow backend } UserTorrent ut = UserTorrent.getByUser(user, hash); if (ut == null) { throw new MessageException("User has no such torrent with hash: " + hash); } ut.delete(); //check if any other users have this torrent too if (UserTorrent.getUsersWithTorrentCount(hash) == 0) { Torrent to = Torrent.getByHash(hash); to.getNode().getNodeBackend().removeTorrent(hash); to.delete(); } event.setUserNotified(false); return null; } }