MapManager.java
Go to the documentation of this file.
00001 package com.github.rosjava.android_apps.map_nav;
00002 
00003 import map_store.ListMaps;
00004 import map_store.ListMapsRequest;
00005 import map_store.ListMapsResponse;
00006 import map_store.PublishMap;
00007 import map_store.PublishMapRequest;
00008 import map_store.PublishMapResponse;
00009 
00010 import org.ros.exception.RosRuntimeException;
00011 import org.ros.exception.ServiceNotFoundException;
00012 import org.ros.namespace.GraphName;
00013 import org.ros.namespace.NameResolver;
00014 import org.ros.node.AbstractNodeMain;
00015 import org.ros.node.ConnectedNode;
00016 import org.ros.node.service.ServiceClient;
00017 import org.ros.node.service.ServiceResponseListener;
00018 
00019 public class MapManager extends AbstractNodeMain {
00020 
00021         private ConnectedNode connectedNode;
00022         private String function;
00023         private ServiceResponseListener<ListMapsResponse> listServiceResponseListener;
00024         private ServiceResponseListener<PublishMapResponse> publishServiceResponseListener;
00025 
00026         private String mapId;
00027     private NameResolver nameResolver;
00028     private boolean nameResolverSet = false;
00029         
00030         public MapManager() {
00031         }
00032         
00033         public void setMapId(String mapId) {
00034                 this.mapId = mapId;
00035         }
00036 
00037     public void setNameResolver(NameResolver newNameResolver) {
00038         nameResolver = newNameResolver;
00039         nameResolverSet = true;
00040     }
00041 
00042     public void setFunction(String function) {
00043                 this.function = function;
00044         }
00045         
00046         public void setListService(
00047                         ServiceResponseListener<ListMapsResponse> listServiceResponseListener) {
00048                 this.listServiceResponseListener = listServiceResponseListener;
00049         }
00050         
00051         public void setPublishService(
00052                         ServiceResponseListener<PublishMapResponse> publishServiceResponseListener) {
00053                 this.publishServiceResponseListener = publishServiceResponseListener;
00054         }
00055 
00056         public void listMaps() {
00057                 ServiceClient<ListMapsRequest, ListMapsResponse> listMapsClient;
00058                 try
00059         {
00060             String srvName = "list_maps";
00061             if (nameResolverSet)
00062             {
00063                 srvName = nameResolver.resolve(srvName).toString();
00064             }
00065                         listMapsClient = connectedNode.newServiceClient(srvName, ListMaps._TYPE);
00066                 } catch (ServiceNotFoundException e) {
00067                           try {
00068                             Thread.sleep(1000L);
00069                             listMaps();
00070                             return;
00071                           } catch (Exception ex) {}
00072                         
00073                         e.printStackTrace();
00074                         throw new RosRuntimeException(e);
00075                 }
00076                 final ListMapsRequest request = listMapsClient.newMessage();
00077                 listMapsClient.call(request, listServiceResponseListener);
00078         }
00079         
00080         public void publishMap() {
00081                 ServiceClient<PublishMapRequest, PublishMapResponse> publishMapClient;
00082                 
00083                 try
00084         {
00085             String srvName = "publish_map";
00086             if (nameResolverSet)
00087             {
00088                 srvName = nameResolver.resolve(srvName).toString();
00089             }
00090                         publishMapClient = connectedNode.newServiceClient(srvName, PublishMap._TYPE);
00091                 } catch (ServiceNotFoundException e) {
00092                          try {
00093                             Thread.sleep(1000L);
00094                             listMaps();
00095                             return;
00096                           } catch (Exception ex) {}
00097                         throw new RosRuntimeException(e);
00098                 }
00099                 final PublishMapRequest request = publishMapClient.newMessage();
00100                 request.setMapId(mapId);
00101                 publishMapClient.call(request, publishServiceResponseListener);
00102         }
00103         
00104 
00105         
00106         @Override
00107         public GraphName getDefaultNodeName() {
00108                 return null;
00109         }
00110         
00111         public void onStart(final ConnectedNode connectedNode) {
00112                 this.connectedNode = connectedNode;
00113                 if (function.equals("list")) {
00114                         listMaps();
00115                 } else if (function.equals("publish")) {
00116                         publishMap();
00117                 }
00118         }
00119 }
00120 


android_apps
Author(s): Daniel Stonier , Kazuto Murase
autogenerated on Fri Aug 28 2015 10:04:40