package org.geosdi.geoplatform.gui.client.widget.tree.refresh;
import com.google.inject.Inject;
import org.geosdi.geoplatform.gui.client.command.layer.basic.LoadRootElementsRequest;
import org.geosdi.geoplatform.gui.client.command.layer.basic.LoadRootElementsResponse;
import org.geosdi.geoplatform.gui.client.model.GPRootTreeNode;
import org.geosdi.geoplatform.gui.client.model.projects.GPShortClientProject;
import org.geosdi.geoplatform.gui.client.puregwt.refresh.GPCompositeRefreshHandler;
import org.geosdi.geoplatform.gui.command.api.GPClientCommand;
import org.geosdi.geoplatform.gui.command.api.GPClientCommandExecutor;
import org.geosdi.geoplatform.gui.configuration.message.GeoPlatformMessage;
import javax.inject.Singleton;
import java.util.logging.Logger;
/**
* @author Giuseppe La Scaleia - CNR IMAA geoSDI Group
* @email giuseppe.lascaleia@geosdi.org
*/
@Singleton
public class GPLayerTreeRefresher implements GPCompositeRefreshHandler {
private static final Logger logger = Logger.getLogger("GPLayerTreeRefresher");
//
private final LoadRootElementsRequest loadRootElementsRequest = new LoadRootElementsRequest();
private final GPRootTreeNode root;
@Inject
public GPLayerTreeRefresher(GPRootTreeNode theRoot) {
this.root = theRoot;
}
@Override
public void refreshRootElements() {
this.loadRootElementsRequest.setProjectId(this.root.getId());
GPClientCommandExecutor.executeCommand(new GPClientCommand<LoadRootElementsResponse>() {
{
super.setCommandRequest(loadRootElementsRequest);
}
@Override
public void onCommandSuccess(LoadRootElementsResponse response) {
GPShortClientProject gpShortClientProject = response.getResult();
root.setProjectElements(gpShortClientProject.getNumberOfElements());
root.setProjectVersion(gpShortClientProject.getVersion());
}
@Override
public void onCommandFailure(Throwable exception) {
GeoPlatformMessage.errorMessage("Error", exception.getMessage());
}
});
}
}