MapManager.java
Go to the documentation of this file.
00001 package com.github.rosjava.android_apps.map_manager;
00002 
00003 import map_store.DeleteMap;
00004 import map_store.DeleteMapRequest;
00005 import map_store.DeleteMapResponse;
00006 import map_store.ListMaps;
00007 import map_store.ListMapsRequest;
00008 import map_store.ListMapsResponse;
00009 import map_store.PublishMap;
00010 import map_store.PublishMapRequest;
00011 import map_store.PublishMapResponse;
00012 import map_store.RenameMap;
00013 import map_store.RenameMapRequest;
00014 import map_store.RenameMapResponse;
00015 
00016 import org.ros.exception.RosRuntimeException;
00017 import org.ros.exception.ServiceNotFoundException;
00018 import org.ros.namespace.GraphName;
00019 import org.ros.namespace.NameResolver;
00020 import org.ros.node.AbstractNodeMain;
00021 import org.ros.node.ConnectedNode;
00022 import org.ros.node.service.ServiceClient;
00023 import org.ros.node.service.ServiceResponseListener;
00024 
00025 
00026 public class MapManager extends AbstractNodeMain {
00027 
00028         private ConnectedNode connectedNode;
00029         private String function;
00030         private ServiceResponseListener<ListMapsResponse> listServiceResponseListener;
00031         private ServiceResponseListener<PublishMapResponse> publishServiceResponseListener;
00032         private ServiceResponseListener<DeleteMapResponse> deleteServiceResponseListener;
00033         private ServiceResponseListener<RenameMapResponse> renameServiceResponseListener;
00034         private String mapId;
00035         private String mapName;
00036     private NameResolver nameResolver;
00037     private boolean nameResolverSet = false;
00038         
00039         public MapManager() {
00040         }
00041         
00042         public void setMapId(String mapId) {
00043                 this.mapId = mapId;
00044         }
00045         
00046         public void setMapName(String mapName) {
00047                 this.mapName = mapName;
00048         }
00049         
00050         public void setFunction(String function) {
00051                 this.function = function;
00052         }
00053         
00054         public void setListService(
00055                         ServiceResponseListener<ListMapsResponse> listServiceResponseListener) {
00056                 this.listServiceResponseListener = listServiceResponseListener;
00057         }
00058         
00059         public void setPublishService(
00060                         ServiceResponseListener<PublishMapResponse> publishServiceResponseListener) {
00061                 this.publishServiceResponseListener = publishServiceResponseListener;
00062         }
00063         
00064         public void setDeleteService(
00065                         ServiceResponseListener<DeleteMapResponse> deleteServiceResponseListener) {
00066                 this.deleteServiceResponseListener = deleteServiceResponseListener;
00067         }
00068         
00069         public void setRenameService(
00070                         ServiceResponseListener<RenameMapResponse> renameServiceResponseListener) {
00071                 this.renameServiceResponseListener = renameServiceResponseListener;
00072         }
00073 
00074     public void setNameResolver(NameResolver newNameResolver) {
00075         nameResolver = newNameResolver;
00076         nameResolverSet = true;
00077     }
00078         
00079         public void listMaps() {
00080                 ServiceClient<ListMapsRequest, ListMapsResponse> listMapsClient;
00081                 try {
00082             String srvName = "list_maps";
00083             if (nameResolverSet)
00084             {
00085                 srvName = nameResolver.resolve(srvName).toString();
00086             }
00087                         listMapsClient = connectedNode.newServiceClient(srvName, ListMaps._TYPE);
00088                 } catch (ServiceNotFoundException e) {
00089                           try {
00090                             Thread.sleep(1000L);
00091                             listMaps();
00092                             return;
00093                           } catch (Exception ex) {}
00094                         
00095                         e.printStackTrace();
00096                         throw new RosRuntimeException(e);
00097                 }
00098                 final ListMapsRequest request = listMapsClient.newMessage();
00099                 listMapsClient.call(request, listServiceResponseListener);
00100         }
00101         
00102         public void publishMap() {
00103                 ServiceClient<PublishMapRequest, PublishMapResponse> publishMapClient;
00104                 
00105                 try {
00106             String srvName = "publish_map";
00107             if (nameResolverSet)
00108             {
00109                 srvName = nameResolver.resolve(srvName).toString();
00110             }
00111             publishMapClient = connectedNode.newServiceClient(srvName, PublishMap._TYPE);
00112                 } catch (ServiceNotFoundException e) {
00113                          try {
00114                             Thread.sleep(1000L);
00115                             listMaps();
00116                             return;
00117                           } catch (Exception ex) {}
00118                         throw new RosRuntimeException(e);
00119                 }
00120                 final PublishMapRequest request = publishMapClient.newMessage();
00121                 request.setMapId(mapId);
00122                 publishMapClient.call(request, publishServiceResponseListener);
00123         }
00124         
00125         public void deleteMap() {
00126                 ServiceClient<DeleteMapRequest, DeleteMapResponse> deleteMapClient;
00127                 
00128                 try {
00129             String srvName = "delete_map";
00130             if (nameResolverSet)
00131             {
00132                 srvName = nameResolver.resolve(srvName).toString();
00133             }
00134             deleteMapClient = connectedNode.newServiceClient(srvName, DeleteMap._TYPE);
00135                 } catch (ServiceNotFoundException e) {
00136                         throw new RosRuntimeException(e);
00137                 }
00138                 final DeleteMapRequest request = deleteMapClient.newMessage();
00139                 request.setMapId(mapId);
00140                 deleteMapClient.call(request, deleteServiceResponseListener);
00141         }
00142         
00143         public void renameMap() {
00144                 ServiceClient<RenameMapRequest, RenameMapResponse> renameMapClient;
00145                 
00146                 try {
00147             String srvName = "rename_map";
00148             if (nameResolverSet)
00149             {
00150                 srvName = nameResolver.resolve(srvName).toString();
00151             }
00152             renameMapClient = connectedNode.newServiceClient(srvName, RenameMap._TYPE);
00153                 } catch (ServiceNotFoundException e) {
00154                         throw new RosRuntimeException(e);
00155                 }
00156                 final RenameMapRequest request = renameMapClient.newMessage();
00157                 request.setMapId(mapId);
00158                 request.setNewName(mapName);
00159                 renameMapClient.call(request, renameServiceResponseListener);
00160         }
00161         
00162         @Override
00163         public GraphName getDefaultNodeName() {
00164                 return null;
00165         }
00166         
00167         public void onStart(final ConnectedNode connectedNode) {
00168                 this.connectedNode = connectedNode;
00169                 if (function.equals("list")) {
00170                         listMaps();
00171                 } else if (function.equals("publish")) {
00172                         publishMap();
00173                 } else if (function.equals("delete")) {
00174                         deleteMap();
00175                 } else if (function.equals("rename")) {
00176                         renameMap();
00177                 } 
00178         }
00179 }


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