hudson.gwtmarketplace.client.commands.GetTopsCommand.java Source code

Java tutorial

Introduction

Here is the source code for hudson.gwtmarketplace.client.commands.GetTopsCommand.java

Source

/*
 * GNU GENERAL PUBLIC LICENSE, Version 3, 29 June 2007
 */
package hudson.gwtmarketplace.client.commands;

import hudson.gwtmarketplace.client.event.TopsDateCheckEvent;
import hudson.gwtmarketplace.client.event.TopsUpdatedEvent;
import hudson.gwtmarketplace.client.model.Top10Lists;

import java.util.Date;

import com.google.gwt.gwtpages.client.Pages;
import com.google.gwt.user.client.rpc.AsyncCallback;

public abstract class GetTopsCommand extends AbstractAsyncCommand<Top10Lists> {

    private static Top10Lists top10Lists;

    static {
        Pages.get().getEventBus().addHandler(TopsDateCheckEvent.TYPE,
                new TopsDateCheckEvent.TopsDateCheckHandler() {

                    @Override
                    public void onTopsDateCheck(Date date) {
                        if (null != date
                                && (null == top10Lists || date.getTime() > top10Lists.getMaxDate().getTime())) {
                            top10Lists = null;
                        }
                    }
                });
    }

    public void execute() {
        if (null == top10Lists) {
            productService().getTops((null != top10Lists) ? top10Lists.getMaxDate() : null,
                    new AsyncCallback<Top10Lists>() {

                        @Override
                        public void onSuccess(Top10Lists result) {
                            GetTopsCommand.top10Lists = result;
                            GetTopsCommand.this.onSuccess(result);
                            Pages.get().getEventBus().fireEvent(new TopsUpdatedEvent(result));
                        }

                        @Override
                        public void onFailure(Throwable caught) {
                            GetTopsCommand.this.onFailure(caught);
                        }
                    });
        } else {
            onSuccess(top10Lists);
        }
    }
}