/*
* Copyright 2014 ArcBees Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.gwtplatform.carstore.client.application.stats;
import java.util.Date;
import javax.inject.Inject;
import com.google.gwt.http.client.Response;
import com.google.web.bindery.event.shared.EventBus;
import com.gwtplatform.carstore.client.application.ApplicationPresenter;
import com.gwtplatform.carstore.client.application.stats.StatisticsPresenter.MyProxy;
import com.gwtplatform.carstore.client.application.stats.StatisticsPresenter.MyView;
import com.gwtplatform.carstore.client.place.NameTokens;
import com.gwtplatform.carstore.shared.api.StatisticsResource;
import com.gwtplatform.dispatch.rest.client.RestCallback;
import com.gwtplatform.dispatch.rest.delegates.client.ResourceDelegate;
import com.gwtplatform.mvp.client.HasUiHandlers;
import com.gwtplatform.mvp.client.Presenter;
import com.gwtplatform.mvp.client.View;
import com.gwtplatform.mvp.client.annotations.NameToken;
import com.gwtplatform.mvp.client.annotations.ProxyStandard;
import com.gwtplatform.mvp.client.proxy.ProxyPlace;
public class StatisticsPresenter extends Presenter<MyView, MyProxy> implements StatisticsUiHandlers {
interface MyView extends View, HasUiHandlers<StatisticsUiHandlers> {
void setResult(String result);
}
@ProxyStandard
@NameToken(NameTokens.STATS)
interface MyProxy extends ProxyPlace<StatisticsPresenter> {
}
private static final String FAILED = "Failed";
private final ResourceDelegate<StatisticsResource> statisticsDelegate;
@Inject
StatisticsPresenter(
EventBus eventBus,
MyView view,
MyProxy proxy,
ResourceDelegate<StatisticsResource> statisticsDelegate) {
super(eventBus, view, proxy, ApplicationPresenter.SLOT_MAIN_CONTENT);
this.statisticsDelegate = statisticsDelegate;
getView().setUiHandlers(this);
}
@Override
@SuppressWarnings("deprecation")
public void extractYear(final Date date) {
getView().setResult("");
statisticsDelegate
.withCallback(new RestCallback<Integer>() {
@Override
public void onFailure(Throwable caught, Response response) {
getView().setResult(FAILED);
}
@Override
public void onSuccess(Integer year, Response response) {
int expectedYear = 1900 + date.getYear();
if (year == expectedYear) {
getView().setResult(year.toString());
} else {
getView().setResult(FAILED);
}
}
})
.extractYearFromDate(date);
}
}