Files
briar/briar-android/src/org/briarproject/android/privategroup/invitation/GroupInvitationControllerImpl.java
Torsten Grote 563d897651 Introduce Exception handler for when no result needs to be returned
Also add NotNull annotation to classes that were touched
2016-11-11 10:03:02 -02:00

87 lines
2.8 KiB
Java

package org.briarproject.android.privategroup.invitation;
import org.briarproject.android.controller.handler.ExceptionHandler;
import org.briarproject.android.sharing.InvitationControllerImpl;
import org.briarproject.api.contact.ContactId;
import org.briarproject.api.db.DatabaseExecutor;
import org.briarproject.api.db.DbException;
import org.briarproject.api.event.Event;
import org.briarproject.api.event.EventBus;
import org.briarproject.api.event.GroupInvitationRequestReceivedEvent;
import org.briarproject.api.event.GroupInvitationResponseReceivedEvent;
import org.briarproject.api.lifecycle.LifecycleManager;
import org.briarproject.api.nullsafety.NotNullByDefault;
import org.briarproject.api.privategroup.PrivateGroup;
import org.briarproject.api.privategroup.invitation.GroupInvitationItem;
import org.briarproject.api.privategroup.invitation.GroupInvitationManager;
import org.briarproject.api.sync.ClientId;
import java.util.Collection;
import java.util.concurrent.Executor;
import javax.inject.Inject;
import static java.util.logging.Level.WARNING;
import static org.briarproject.api.privategroup.PrivateGroupManager.CLIENT_ID;
@NotNullByDefault
public class GroupInvitationControllerImpl
extends InvitationControllerImpl<GroupInvitationItem>
implements GroupInvitationController {
private final GroupInvitationManager groupInvitationManager;
@Inject
GroupInvitationControllerImpl(@DatabaseExecutor Executor dbExecutor,
LifecycleManager lifecycleManager, EventBus eventBus,
GroupInvitationManager groupInvitationManager) {
super(dbExecutor, lifecycleManager, eventBus);
this.groupInvitationManager = groupInvitationManager;
}
@Override
public void eventOccurred(Event e) {
super.eventOccurred(e);
if (e instanceof GroupInvitationRequestReceivedEvent) {
LOG.info("Group invitation request received, reloading");
listener.loadInvitations(false);
} else if (e instanceof GroupInvitationResponseReceivedEvent) {
LOG.info("Group invitation response received, reloading");
listener.loadInvitations(false);
}
}
@Override
protected ClientId getShareableClientId() {
return CLIENT_ID;
}
@Override
protected Collection<GroupInvitationItem> getInvitations()
throws DbException {
return groupInvitationManager.getInvitations();
}
@Override
public void respondToInvitation(final GroupInvitationItem item,
final boolean accept,
final ExceptionHandler<DbException> handler) {
runOnDbThread(new Runnable() {
@Override
public void run() {
try {
PrivateGroup g = item.getShareable();
ContactId c = item.getCreator().getId();
groupInvitationManager.respondToInvitation(c, g, accept);
} catch (DbException e) {
if (LOG.isLoggable(WARNING))
LOG.log(WARNING, e.toString(), e);
handler.onException(e);
}
}
});
}
}