package org.jchannel.client.controller;
import java.util.List;
import com.google.gwt.user.client.rpc.AsyncCallback;
import org.jchannel.client.state.ThreadState;
import org.jchannel.client.state.TopicState;
import org.jchannel.client.ui.dialog.MessageDialog;
import org.jchannel.server.entity.Thread;
public final class ThreadController extends Controller {
public static final ThreadController INSTANCE = new ThreadController();
public void countPages(final String threadUuid) {
SERVICE.countPosts(threadUuid,
new AsyncCallback<Long>() {
@Override
public void onFailure(final Throwable t) {
MessageDialog.INSTANCE.show("Error counting thread pages");
}
@Override
public void onSuccess(final Long count) {
int pages = (int) Math.ceil((double) count / (double) ThreadState.INSTANCE.getPageSize());
ThreadState.INSTANCE.setPages(pages);
}
});
}
public void deleteThread(final String threadUuid) {
SERVICE.deleteThread(threadUuid,
new AsyncCallback<Void>() {
@Override
public void onFailure(final Throwable t) {
MessageDialog.INSTANCE.show("Error deleting thread");
}
@Override
public void onSuccess(final Void result) {
TopicController.INSTANCE.countPages(TopicState.INSTANCE.getTopic().getShortName());
findThreads(
TopicState.INSTANCE.getTopic().getShortName(),
TopicState.INSTANCE.getPage(),
TopicState.INSTANCE.getPageSize());
MessageDialog.INSTANCE.show("Thread deleted");
}
});
}
public void findThread(final String threadUuid) {
SERVICE.readThread(threadUuid,
new AsyncCallback<Thread>() {
@Override
public void onFailure(final Throwable t) {
MessageDialog.INSTANCE.show("Error finding thread");
}
@Override
public void onSuccess(final Thread thread) {
ThreadState.INSTANCE.setThread(thread);
}
});
}
public void findThreads(final String topicShortName, final int page, final int pageSize) {
SERVICE.readThreads(topicShortName, page, pageSize,
new AsyncCallback<List<Thread>>() {
@Override
public void onFailure(final Throwable t) {
MessageDialog.INSTANCE.show("Error finding threads");
}
@Override
public void onSuccess(final List<Thread> threads) {
ThreadState.INSTANCE.setThreads(threads);
}
});
}
}
|