/*
* This is part of Geomajas, a GIS framework, http://www.geomajas.org/.
*
* Copyright 2008-2011 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.CommandResponse;
import org.geomajas.command.SuccessCommandResponse;
import org.geomajas.gwt.client.command.CommandCallback;
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 CommandCallback() {
public void execute(CommandResponse response) {
if (response instanceof GetSearchFavouritesResponse) {
GetSearchFavouritesResponse resp = (GetSearchFavouritesResponse) response;
if (onFinished != null) {
int size = resp.getPrivateSearchFavourites().size() + resp.getSharedSearchFavourites().size();
List<SearchFavourite> result = new ArrayList<SearchFavourite>(size);
result.addAll(resp.getPrivateSearchFavourites());
result.addAll(resp.getSharedSearchFavourites());
onFinished.execute(result);
}
}
}
});
}
/**
* Returns the persisted instance (this has extra properties + id set).
* @param sf
* @param onFinished
*/
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 CommandCallback() {
public void execute(CommandResponse response) {
if (response instanceof SaveSearchFavouriteResponse) {
SaveSearchFavouriteResponse resp = (SaveSearchFavouriteResponse) response;
if (onFinished != null) {
onFinished.execute(resp.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 CommandCallback() {
public void execute(CommandResponse response) {
if (response instanceof SuccessCommandResponse) {
SuccessCommandResponse resp = (SuccessCommandResponse) response;
if (onFinished != null) {
onFinished.execute(resp.isSuccess());
}
}
}
});
}
}