/*
* This is part of Geomajas, a GIS framework, http://www.geomajas.org/.
*
* Copyright 2008-2015 Geosparc nv, http://www.geosparc.com/, Belgium.
*
* The program is available in open source according to the GNU Affero
* General Public License. All contributions in this program are covered
* by the Geomajas Contributors License Agreement. For full licensing
* details, see LICENSE.txt in the project root.
*/
package org.geomajas.widget.searchandfilter.client.util;
import java.util.ArrayList;
import java.util.List;
import org.geomajas.command.SuccessCommandResponse;
import org.geomajas.gwt.client.command.AbstractCommandCallback;
import org.geomajas.gwt.client.command.GwtCommand;
import org.geomajas.gwt.client.command.GwtCommandDispatcher;
import org.geomajas.widget.searchandfilter.command.dto.DeleteSearchFavouriteRequest;
import org.geomajas.widget.searchandfilter.command.dto.GetSearchFavouritesRequest;
import org.geomajas.widget.searchandfilter.command.dto.GetSearchFavouritesResponse;
import org.geomajas.widget.searchandfilter.command.dto.SaveSearchFavouriteRequest;
import org.geomajas.widget.searchandfilter.command.dto.SaveSearchFavouriteResponse;
import org.geomajas.widget.searchandfilter.search.dto.SearchFavourite;
/**
* Convenience class with helper methods for commands.
*
* @author Kristof Heirwegh
*/
public final class FavouritesCommService {
/**
* Utility class
*/
private FavouritesCommService() {
}
public static void getSearchFavourites(final DataCallback<List<SearchFavourite>> onFinished) {
GwtCommand command = new GwtCommand(GetSearchFavouritesRequest.COMMAND);
command.setCommandRequest(new GetSearchFavouritesRequest());
GwtCommandDispatcher.getInstance().execute(command, new AbstractCommandCallback<GetSearchFavouritesResponse>() {
public void execute(GetSearchFavouritesResponse response) {
if (onFinished != null) {
int size = response.getPrivateSearchFavourites().size() +
response.getSharedSearchFavourites().size();
List<SearchFavourite> result = new ArrayList<SearchFavourite>(size);
result.addAll(response.getPrivateSearchFavourites());
result.addAll(response.getSharedSearchFavourites());
onFinished.execute(result);
}
}
});
}
/**
* Returns the persisted instance (this has extra properties + id set).
* @param sf search favourite
* @param onFinished callback when finished
*/
public static void saveSearchFavourite(SearchFavourite sf, final DataCallback<SearchFavourite> onFinished) {
SaveSearchFavouriteRequest ssfr = new SaveSearchFavouriteRequest();
ssfr.setSearchFavourite(sf);
GwtCommand command = new GwtCommand(SaveSearchFavouriteRequest.COMMAND);
command.setCommandRequest(ssfr);
GwtCommandDispatcher.getInstance().execute(command, new AbstractCommandCallback<SaveSearchFavouriteResponse>() {
public void execute(SaveSearchFavouriteResponse response) {
if (onFinished != null) {
onFinished.execute(response.getSearchFavourite());
}
}
});
}
public static void deleteSearchFavourite(SearchFavourite sf, final DataCallback<Boolean> onFinished) {
DeleteSearchFavouriteRequest dsfr = new DeleteSearchFavouriteRequest();
dsfr.setSearchFavouriteId(sf.getId());
GwtCommand command = new GwtCommand(DeleteSearchFavouriteRequest.COMMAND);
command.setCommandRequest(dsfr);
GwtCommandDispatcher.getInstance().execute(command, new AbstractCommandCallback<SuccessCommandResponse>() {
public void execute(SuccessCommandResponse response) {
if (onFinished != null) {
onFinished.execute(response.isSuccess());
}
}
});
}
}